{"id":2577,"name":"pygithub","ecosystem":"pip","repository_url":"https://github.com/pygithub/pygithub","issues_count":525,"created_at":"2025-06-06T15:02:06.976Z","updated_at":"2025-06-06T15:02:06.976Z","purl":"pkg:pypi/pygithub","metadata":{"id":2872345,"name":"pygithub","ecosystem":"pypi","description":"Use the full Github API v3","homepage":null,"licenses":"GNU Library or Lesser General Public License (LGPL)","normalized_licenses":["LGPL-2.0","LGPL-2.1"],"repository_url":"https://github.com/pygithub/pygithub","keywords_array":["github"],"namespace":null,"versions_count":103,"first_release_published_at":"2012-02-19T21:51:29.000Z","latest_release_published_at":"2025-02-21T13:45:55.000Z","latest_release_number":"2.6.1","last_synced_at":"2025-06-05T23:01:46.881Z","created_at":"2022-04-10T12:13:14.705Z","updated_at":"2025-06-05T23:01:46.881Z","registry_url":"https://pypi.org/project/pygithub/","install_command":"pip install pygithub --index-url https://pypi.org/simple","documentation_url":"https://pygithub.readthedocs.io/en/stable/","metadata":{"funding":null,"documentation":"https://pygithub.readthedocs.io/en/stable/","classifiers":["Development Status :: 5 - Production/Stable","Environment :: Web Environment","Intended Audience :: Developers","License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Topic :: Software Development"],"normalized_name":"pygithub"},"repo_metadata":{"id":2564982,"uuid":"3544490","full_name":"PyGithub/PyGithub","owner":"PyGithub","description":"Typed interactions with the GitHub API v3","archived":false,"fork":false,"pushed_at":"2024-05-28T08:30:48.000Z","size":15916,"stargazers_count":6745,"open_issues_count":317,"forks_count":1734,"subscribers_count":111,"default_branch":"main","last_synced_at":"2024-05-29T13:45:06.308Z","etag":null,"topics":["github","github-api","pygithub","python"],"latest_commit_sha":null,"homepage":"https://pygithub.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PyGithub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"COPYING","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,"publiccode":null,"codemeta":null},"funding":{"github":["sfdye","s-t-e-v-e-n-k","enricomi"]}},"created_at":"2012-02-25T12:53:47.000Z","updated_at":"2024-06-18T10:53:47.375Z","dependencies_parsed_at":"2023-07-06T15:32:30.539Z","dependency_job_id":"d304f61a-09bb-45b4-af55-25d1c1140c0e","html_url":"https://github.com/PyGithub/PyGithub","commit_stats":{"total_commits":2022,"total_committers":365,"mean_commits":5.53972602739726,"dds":0.5346191889218596,"last_synced_commit":"cc766a6ffdfa4b24c395dd958df46704348637fb"},"previous_names":["jacquev6/pygithub"],"tags_count":108,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyGithub","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":208063559,"owners_count":14812579,"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":"PyGithub","name":"PyGithub","uuid":"11288996","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/11288996?v=4","repositories_count":1,"last_synced_at":"2024-03-26T08:46:21.740Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/PyGithub","funding_links":[],"total_stars":6625,"followers":33,"following":0,"created_at":"2022-11-03T11:47:44.839Z","updated_at":"2024-03-26T08:46:21.753Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyGithub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyGithub/repositories"},"tags":[{"name":"v2.3.0","sha":"7266e812ed2976ea36a4303edecfe5d75522343f","kind":"commit","published_at":"2024-03-24T14:17:39.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.3.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.3.0/manifests"},{"name":"v2.2.0","sha":"7e7653fb7cb054d3b03dd5f89dea1a2a79350827","kind":"commit","published_at":"2024-01-30T07:49:45.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.2.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.2.0/manifests"},{"name":"v2.1.1","sha":"e584a90f6706c3b590a20e1c9caac7874ba6b122","kind":"commit","published_at":"2023-09-29T21:54:12.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.1.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.1.1/manifests"},{"name":"v2.1.0.post0","sha":"035c88f1aae81df6c4cb91c4fb22ccd268a8b335","kind":"tag","published_at":"2023-09-29T16:27:24.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.1.0.post0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.1.0.post0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.1.0.post0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.1.0.post0/manifests"},{"name":"v2.1.0","sha":"467e0268eac67d0635948f1f3e0313365fb242a1","kind":"commit","published_at":"2023-09-29T15:48:38.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.1.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.1.0/manifests"},{"name":"v2.0.1-preview","sha":"50299c92f4a0fdde3e66900e9fbdb75cb3c4d559","kind":"commit","published_at":"2023-08-03T10:29:46.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.0.1-preview","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.0.1-preview","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.1-preview","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.1-preview/manifests"},{"name":"v1.59.1","sha":"8c60234954be68c666417690cfee0463401af7c0","kind":"commit","published_at":"2023-08-03T09:37:31.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.59.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.59.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.59.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.59.1/manifests"},{"name":"v2.0.0-preview.1","sha":"62436e6f54be85cd800a5bf4aacd8e34ddac9232","kind":"commit","published_at":"2023-07-11T15:13:09.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.0.0-preview.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.0.0-preview.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0-preview.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0-preview.1/manifests"},{"name":"v2.0.0-preview","sha":"bc68626941368d6350a6b5bca3321d2143151c01","kind":"commit","published_at":"2023-07-04T05:59:53.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.0.0-preview","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.0.0-preview","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0-preview","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0-preview/manifests"},{"name":"v1.59.0","sha":"14ae2cad4ceeefe9a0f70916af03f0a2017ca213","kind":"commit","published_at":"2023-06-22T17:41:10.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.59.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.59.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.59.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.59.0/manifests"},{"name":"v1.58.2","sha":"c2b1db917bbadf9137e0113e97cee1f241319597","kind":"commit","published_at":"2023-05-09T09:49:48.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.58.2","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.58.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.58.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.58.2/manifests"},{"name":"v1.58.1","sha":"dbc26d05d46b5a98693052303da2d1ceaed1516c","kind":"tag","published_at":"2023-03-18T07:53:37.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.58.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.58.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.58.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.58.1/manifests"},{"name":"v1.58.0","sha":"5d1d1612ad4e624b9958e42afe769fc3b3c36503","kind":"commit","published_at":"2023-02-19T10:12:47.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.58.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.58.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.58.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.58.0/manifests"},{"name":"v1.57","sha":"948edc5bb370af5a1d0f4925dea2b17f68ef4927","kind":"tag","published_at":"2022-11-05T01:08:34.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.57","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.57","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.57","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.57/manifests"},{"name":"v1.56","sha":"c677ced98d157e98015ef85644f8f465af2fa3a3","kind":"tag","published_at":"2022-10-13T01:23:03.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.56","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.56","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.56","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.56/manifests"},{"name":"v1.55","sha":"31538337faaa61e104afede75a5fac802c9a1ab3","kind":"tag","published_at":"2021-04-26T04:43:40.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.55","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.55","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.55","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.55/manifests"},{"name":"v1.54.0.1","sha":"069e94dc4da5051ec4adb59a3f2a6ad51862c39f","kind":"commit","published_at":"2021-04-26T02:22:13.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.54.0.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.54.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.54.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.54.0.1/manifests"},{"name":"v1.54.1","sha":"34d097ce473601624722b90fc5d0396011dd3acb","kind":"tag","published_at":"2020-12-24T04:11:01.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.54.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.54.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.54.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.54.1/manifests"},{"name":"v1.54","sha":"951fcdf23f8c657b525dee78086bc4dfd42ef810","kind":"tag","published_at":"2020-11-30T05:43:49.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.54","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.54","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.54","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.54/manifests"},{"name":"v1.53","sha":"743f5a58b0bce91c4eab744ff7e39dfca9e6e8a5","kind":"tag","published_at":"2020-08-18T08:15:44.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.53","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.53","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.53","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.53/manifests"},{"name":"v1.52","sha":"707246519e38ac61c39a482542034b03dc316bba","kind":"tag","published_at":"2020-08-03T08:45:52.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.52","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.52","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.52","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.52/manifests"},{"name":"v1.51","sha":"0ca534ee1c0d6c6ddcf5f238ffe1838d75a8e082","kind":"tag","published_at":"2020-05-02T16:59:08.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.51","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.51","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.51","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.51/manifests"},{"name":"v1.50","sha":"a9f174bd1d6da6cf4053e09349e7e22b0d8fee09","kind":"tag","published_at":"2020-04-26T08:48:26.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.50","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.50","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.50","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.50/manifests"},{"name":"v1.47","sha":"afb1259a4e52d7bbee8415a523d78c3a428968a8","kind":"tag","published_at":"2020-03-15T02:01:20.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.47","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.47","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.47","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.47/manifests"},{"name":"v1.46","sha":"e5ce4912f5e96107eeb2670b8d29c173f82362f8","kind":"tag","published_at":"2020-02-11T01:33:45.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.46","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.46","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.46","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.46/manifests"},{"name":"v1.45","sha":"7134752c36d82c28c87ef83949788027c37d32b6","kind":"tag","published_at":"2019-12-29T03:48:30.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.45","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.45","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.45","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.45/manifests"},{"name":"v1.44.1","sha":"05b9ecb4717f4b94cb6556581b441e38038799d5","kind":"tag","published_at":"2019-11-07T01:44:10.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.44.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.44.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.44.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.44.1/manifests"},{"name":"v1.44","sha":"ff716654fd2b11230b825e8af7cf226f7ce5d326","kind":"tag","published_at":"2019-10-19T07:32:53.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.44","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.44","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.44","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.44/manifests"},{"name":"v1.43.8","sha":"1ced0545920d2b8a53167b5acec7d93fe097ea73","kind":"tag","published_at":"2019-07-20T15:56:37.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.43.8","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.43.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.8/manifests"},{"name":"v1.43.7","sha":"f716df86bbe7dc276c6596699fa9712b61ef974c","kind":"tag","published_at":"2019-04-16T03:49:45.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.43.7","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.43.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.7/manifests"},{"name":"v1.43.6","sha":"fcc26708732e63756ce84073dad2f5e18472baff","kind":"tag","published_at":"2019-04-05T06:32:18.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.43.6","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.43.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.6/manifests"},{"name":"v1.43.5","sha":"710209fbcce686a98842a2223a0a6106d5fa7729","kind":"tag","published_at":"2019-01-28T09:50:05.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.43.5","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.43.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.5/manifests"},{"name":"v1.43.4","sha":"4a6daf6b9f78c8119841e825c36cb2739bca44dc","kind":"tag","published_at":"2018-12-21T09:29:21.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.43.4","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.43.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.4/manifests"},{"name":"v1.43.3","sha":"395fd5c98bc0f7ce72128b3dd319f3df3301e692","kind":"tag","published_at":"2018-10-31T00:38:13.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.43.3","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.43.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.3/manifests"},{"name":"v1.43.2","sha":"8ef6990889eabf717391819b54c59408a46b500e","kind":"tag","published_at":"2018-09-12T07:01:08.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.43.2","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.43.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.2/manifests"},{"name":"v1.43.1","sha":"54eb59cf6e6de33a1d0723e7c961ff9597cd3af9","kind":"tag","published_at":"2018-09-11T05:10:13.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.43.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.43.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43.1/manifests"},{"name":"v1.43","sha":"4e3d47c0e8162e7dcfb0f7d6db00a5b2368b679d","kind":"commit","published_at":"2018-09-08T07:09:08.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.43","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.43","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.43/manifests"},{"name":"v1.42","sha":"df57bf17a820c7335cd672499da0a785afb59b43","kind":"tag","published_at":"2018-08-19T04:27:09.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.42","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.42","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.42","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.42/manifests"},{"name":"v1.41","sha":"2c97823a9595ca1bc6fb9a873d89baba11a8d104","kind":"tag","published_at":"2018-08-19T03:58:17.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.41","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.41","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.41","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.41/manifests"},{"name":"v1.40","sha":"d897e86aa9aa6469971b3e2201ead39cf1aebb62","kind":"tag","published_at":"2018-06-26T01:05:38.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.40","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.40","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.40","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.40/manifests"},{"name":"v1.40a4","sha":"286272aaf1230cb9553a0ac57211492fec1d8e4c","kind":"tag","published_at":"2018-05-21T02:42:33.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.40a4","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.40a4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.40a4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.40a4/manifests"},{"name":"v1.40a3","sha":"b0fc5da5ae0cd1b90124ad45fe985080afe552e8","kind":"tag","published_at":"2018-04-26T06:52:47.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.40a3","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.40a3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.40a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.40a3/manifests"},{"name":"v1.40a2","sha":"d9071a9eda9d97e8f92b1ae0bd4972d00b8595e1","kind":"tag","published_at":"2018-04-23T06:31:58.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.40a2","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.40a2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.40a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.40a2/manifests"},{"name":"v1.40a1","sha":"981111dbe0413d936b33d92a1bb7e1a55ddc00bb","kind":"tag","published_at":"2018-04-17T04:15:02.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.40a1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.40a1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.40a1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.40a1/manifests"},{"name":"v1.39","sha":"6563ce12f53ec3c8bafa7aeae3e21a251eef0eba","kind":"tag","published_at":"2018-04-10T02:21:49.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.39","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.39","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.39","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.39/manifests"},{"name":"v1.38","sha":"193aeaad2a110ed622fd9b1be02420a67f9629b0","kind":"tag","published_at":"2018-03-21T02:19:03.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.38","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.38","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.38","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.38/manifests"},{"name":"v1.37","sha":"b2461670d302a1fe56d6bf3730e74191c770ca1a","kind":"tag","published_at":"2018-03-01T10:09:55.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.37","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.37","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.37","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.37/manifests"},{"name":"v1.36","sha":"79f64c12f037b7329c12cf130318c8fdc0be3a0d","kind":"tag","published_at":"2018-02-07T08:51:41.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.36","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.36","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.36","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.36/manifests"},{"name":"v1.35","sha":"19310e77e3279080998e2ff230d19e6fe0743528","kind":"commit","published_at":"2017-07-10T11:16:34.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.35","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.35","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.35","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.35/manifests"},{"name":"1.35","sha":"19310e77e3279080998e2ff230d19e6fe0743528","kind":"commit","published_at":"2017-07-10T11:16:34.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/1.35","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/1.35","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/1.35","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/1.35/manifests"},{"name":"v1.34","sha":"a628556690ea3a674ff44cba62dc825b18d24b95","kind":"tag","published_at":"2017-04-02T21:00:08.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.34","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.34","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.34","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.34/manifests"},{"name":"v1.33","sha":"e783ee37375bcfab5e9d634e42e0b59524d35053","kind":"tag","published_at":"2017-03-27T13:24:34.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.33","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.33","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.33","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.33/manifests"},{"name":"v1.32","sha":"414f6e648f4da87f10bae7d01948a63dc82b80f8","kind":"commit","published_at":"2017-02-01T10:05:35.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.32","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.32","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.32","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.32/manifests"},{"name":"v1.31","sha":"2defb8920e3b2d379e9e6227911a10268a368d78","kind":"commit","published_at":"2017-01-30T09:52:45.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.31","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.31","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.31","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.31/manifests"},{"name":"v1.30","sha":"2b9d08ef7826688dce46dc422b0324de9b9c113c","kind":"tag","published_at":"2017-01-30T09:46:52.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.30","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.30","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.30","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.30/manifests"},{"name":"v1.29","sha":"43f61f9471cc4c1aab69524ba53bb11d6597d0bf","kind":"tag","published_at":"2016-10-05T09:43:21.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.29","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.29","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.29","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.29/manifests"},{"name":"v1.28","sha":"4a657d67f8f325b081233583216db07a88b761c8","kind":"tag","published_at":"2016-09-11T19:58:32.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.28","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.28","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.28","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.28/manifests"},{"name":"v1.27.1","sha":"0098e08792b1aaa2c5cbe498a0139f58199dd90c","kind":"tag","published_at":"2016-08-12T07:01:38.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.27.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.27.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.27.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.27.1/manifests"},{"name":"v1.27.0","sha":"37c9a5045dc592af630f5e46aa53e0c86617d696","kind":"tag","published_at":"2016-08-11T15:51:28.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.27.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.27.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.27.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.27.0/manifests"},{"name":"v1.26.0","sha":"ace2b0c067a7f92bf12965fb4cbfbc8d893d06d2","kind":"tag","published_at":"2015-11-06T04:32:48.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.26.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.26.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.26.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.26.0/manifests"},{"name":"v1.25.2","sha":"5a05a5e58f682d315acd2447c87ac5b4d4fc55e8","kind":"tag","published_at":"2014-10-08T01:54:00.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.25.2","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.25.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.25.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.25.2/manifests"},{"name":"v1.25.1","sha":"9962ae226869c8c57aed545a8e4834988682cf31","kind":"tag","published_at":"2014-09-28T20:52:34.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.25.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.25.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.25.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.25.1/manifests"},{"name":"v2.0.0-alpha.4","sha":"c5a2bb0934ffc04fcd42d0b55e1fec7810bd95b7","kind":"tag","published_at":"2014-08-06T05:44:28.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.0.0-alpha.4","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.0.0-alpha.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0-alpha.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0-alpha.4/manifests"},{"name":"v2.0.0.-alpha.3","sha":"d737ccbe2ab54c747374d2a8f1bc9268aa25372d","kind":"tag","published_at":"2014-07-12T21:29:07.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.0.0.-alpha.3","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.0.0.-alpha.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0.-alpha.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0.-alpha.3/manifests"},{"name":"v1.25.0","sha":"b64b0d6942bb27095bd035b8c0db10ca35448be3","kind":"tag","published_at":"2014-05-04T20:08:12.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.25.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.25.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.25.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.25.0/manifests"},{"name":"v2.0.0-alpha.2","sha":"4d4c2ed3c79e4fe4e58b0a7b9dbd976cb92b22bb","kind":"tag","published_at":"2014-03-24T02:17:49.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.0.0-alpha.2","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.0.0-alpha.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0-alpha.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0-alpha.2/manifests"},{"name":"v2.0.0-alpha.1","sha":"a27948a3c5ad70f2818379ae07953405fcee9d0d","kind":"tag","published_at":"2014-03-24T02:17:25.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v2.0.0-alpha.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v2.0.0-alpha.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0-alpha.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v2.0.0-alpha.1/manifests"},{"name":"v1.24.1","sha":"5e7d45a2f8c09757a0ce6d0bf37a8eec31791578","kind":"tag","published_at":"2014-03-16T18:44:05.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.24.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.24.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.24.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.24.1/manifests"},{"name":"v1.24.0","sha":"2e74c7d9ea66484dfbcb64e6c05964c07d1f9c02","kind":"tag","published_at":"2014-03-03T05:05:38.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.24.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.24.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.24.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.24.0/manifests"},{"name":"v1.23.0","sha":"937c7fccf586643530eff6a557f262c1950dc89f","kind":"tag","published_at":"2013-12-24T03:51:42.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.23.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.23.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.23.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.23.0/manifests"},{"name":"v1.22.0","sha":"66edeb601fe7fb48d84e9adcc6bdfef64e87a0f0","kind":"tag","published_at":"2013-12-16T02:11:22.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.22.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.22.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.22.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.22.0/manifests"},{"name":"v1.21.0","sha":"3ff7e4843ef251c158dc8d07e667db80e03820bb","kind":"tag","published_at":"2013-11-17T22:07:17.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.21.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.21.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.21.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.21.0/manifests"},{"name":"v1.20.0","sha":"8cb3f372837e2648f17e3f085d2821114b507383","kind":"tag","published_at":"2013-10-21T02:48:22.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.20.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.20.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.20.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.20.0/manifests"},{"name":"v1.19.0","sha":"9f9be931fb3821256d8bb685577b5167652763d5","kind":"tag","published_at":"2013-09-08T15:45:37.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.19.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.19.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.19.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.19.0/manifests"},{"name":"v1.18.0","sha":"5a0d5e2b69368ce59fdc8b78688165aceb9f7ca8","kind":"tag","published_at":"2013-08-21T14:42:02.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.18.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.18.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.18.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.18.0/manifests"},{"name":"v1.17.0","sha":"72f8876112ba029111c739871e3e4d7bce66b95d","kind":"tag","published_at":"2013-07-07T15:54:23.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.17.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.17.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.17.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.17.0/manifests"},{"name":"v1.16.0","sha":"539ec2a7258a06af3c5c3e93bfbf4b8d3e4fd672","kind":"tag","published_at":"2013-05-31T12:16:04.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.16.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.16.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.16.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.16.0/manifests"},{"name":"v1.15.0","sha":"e1c7052ff1ed27c28ea999cb1f9e1ba691eacfc1","kind":"tag","published_at":"2013-05-17T12:38:46.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.15.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.15.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.15.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.15.0/manifests"},{"name":"v1.14.2","sha":"446f0c94410e678662bb8770e8dc4d8c263b74e6","kind":"tag","published_at":"2013-04-25T18:25:47.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.14.2","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.14.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.14.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.14.2/manifests"},{"name":"v1.14.1","sha":"2d1c709062ec7bd132a7421429d7bcbf5dca20e4","kind":"tag","published_at":"2013-04-25T09:34:11.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.14.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.14.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.14.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.14.1/manifests"},{"name":"v1.14.0","sha":"0a0fc8848167c7ad106a0feff93296c006b24fe6","kind":"tag","published_at":"2013-04-22T20:47:56.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.14.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.14.0/manifests"},{"name":"v1.13.1","sha":"dc96fef052f2b5c6adb34da65169e8df3f35f611","kind":"tag","published_at":"2013-03-28T19:10:55.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.13.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.13.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.13.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.13.1/manifests"},{"name":"v1.13.0","sha":"b7e4000450e89b8c6e947e3a1e52fb06da7c9621","kind":"tag","published_at":"2013-03-22T17:41:41.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.13.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.13.0/manifests"},{"name":"v1.12.2","sha":"03a256a4052cacea998d8205a83d5b5465f31e18","kind":"tag","published_at":"2013-03-03T17:46:52.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.12.2","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.12.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.12.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.12.2/manifests"},{"name":"v1.12.1","sha":"67bdf8c0be32dc195a4545bf90100a1b55eebf45","kind":"tag","published_at":"2013-02-20T18:42:15.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.12.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.12.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.12.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.12.1/manifests"},{"name":"v1.12.0","sha":"c8553031178cbf221d95af1ecc7ffd4707ac5cc9","kind":"tag","published_at":"2013-02-20T18:16:14.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.12.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.12.0/manifests"},{"name":"v1.11.1","sha":"392a422ec2b9b97f7b1ad41e04cc62ef67ad0e7f","kind":"tag","published_at":"2013-02-09T10:20:36.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.11.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.11.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.11.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.11.1/manifests"},{"name":"v1.11.0","sha":"6b32e1cdf588d8c3c651d355ffc3451dd34284b9","kind":"tag","published_at":"2013-02-07T18:09:48.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.11.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.11.0/manifests"},{"name":"v1.10.0","sha":"4400a24872e52ee488067a7d0d8522ca3764b4e5","kind":"tag","published_at":"2012-12-25T12:16:10.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.10.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.10.0/manifests"},{"name":"v1.9.1","sha":"a922319db0037babe9919a83b8b69efebcf942ea","kind":"tag","published_at":"2012-11-20T18:36:28.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.9.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.9.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.9.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.9.1/manifests"},{"name":"v1.9.0","sha":"808fe92191d287bbad6131c5a8be78b4ded745fd","kind":"tag","published_at":"2012-11-19T20:41:56.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.9.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.9.0/manifests"},{"name":"v1.8.1","sha":"e3d76fc3ec3dd4f4c3b3a440ff9e771f06d63a39","kind":"tag","published_at":"2012-10-28T09:35:11.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.8.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.8.1/manifests"},{"name":"v1.8.0","sha":"31110327ec45f3138e58ed247b2cf420fee481ec","kind":"tag","published_at":"2012-09-30T17:59:21.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.8.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.8.0/manifests"},{"name":"v1.7","sha":"df3290644ad7846d4ca93ba94af943ae1431ee1c","kind":"tag","published_at":"2012-09-12T19:39:18.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.7","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.7/manifests"},{"name":"v1.6","sha":"cabc55dc3b858b7e02076e2c1041f242f05b9f1c","kind":"tag","published_at":"2012-09-08T17:56:10.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.6","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.6/manifests"},{"name":"v1.5","sha":"ece857f70e19b69ebeda244da71f892c8b05f53a","kind":"tag","published_at":"2012-09-05T17:54:40.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.5","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.5/manifests"},{"name":"v1.4","sha":"bf1e3b588b2a91afcabb64d5d28476bdbf074912","kind":"tag","published_at":"2012-08-04T06:05:57.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.4","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.4/manifests"},{"name":"v1.3","sha":"e6c64ab31ea88229f0c81ae9f83496db34452db7","kind":"tag","published_at":"2012-07-13T19:56:42.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.3","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.3/manifests"},{"name":"v1.2","sha":"d40bec470e30bac4175d62a880b42757939553c9","kind":"tag","published_at":"2012-06-29T18:45:51.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.2","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.2/manifests"},{"name":"v1.1","sha":"6658713d2790d1d47886ed9cee84ba645f160877","kind":"tag","published_at":"2012-06-20T21:02:38.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.1/manifests"},{"name":"v1.0","sha":"0855be0a4db8537b313b370b2a4642b7971a8296","kind":"tag","published_at":"2012-06-03T19:47:51.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v1.0","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v1.0/manifests"},{"name":"v0.7","sha":"ecda065e01876209d2bdf5fe4e91cee8ffaa9ff7","kind":"tag","published_at":"2012-05-25T17:18:58.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v0.7","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v0.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.7/manifests"},{"name":"v0.6","sha":"4303c5b90e2216d927155e9609436ccb8984c495","kind":"tag","published_at":"2012-05-10T18:14:15.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v0.6","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v0.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.6/manifests"},{"name":"v0.5","sha":"936f4a97f1a86392637ec002bbf89ff036a5062d","kind":"tag","published_at":"2012-05-10T18:13:54.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v0.5","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v0.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.5/manifests"},{"name":"v0.4","sha":"a3be28756101370fbc689eec3a7825c4c385a6c9","kind":"tag","published_at":"2012-05-10T18:13:10.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v0.4","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.4/manifests"},{"name":"v0.3","sha":"636e6112deb72277b3bffcc3303cd7e8a7431a5d","kind":"tag","published_at":"2012-05-10T18:12:42.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v0.3","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.3/manifests"},{"name":"v0.2","sha":"9f0b05161f9d1962b9156e6c91fc04f382028240","kind":"tag","published_at":"2012-05-10T18:12:04.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v0.2","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.2/manifests"},{"name":"v0.1","sha":"dbdcda3591980de42617814f792969126e6402c3","kind":"tag","published_at":"2012-05-10T18:09:23.000Z","download_url":"https://codeload.github.com/PyGithub/PyGithub/tar.gz/v0.1","html_url":"https://github.com/PyGithub/PyGithub/releases/tag/v0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyGithub%2FPyGithub/tags/v0.1/manifests"}]},"repo_metadata_updated_at":"2024-09-08T01:58:47.092Z","dependent_packages_count":269,"downloads":40921033,"downloads_period":"last-month","dependent_repos_count":2964,"rankings":{"downloads":0.05612547160986561,"dependent_repos_count":0.18726832194010715,"dependent_packages_count":0.08675603944923671,"stargazers_count":0.7125733895566271,"forks_count":1.3648027263039544,"docker_downloads_count":1.2595216128919842,"average":0.6111745936252958},"purl":"pkg:pypi/pygithub","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pygithub","docker_dependents_count":111,"docker_downloads_count":26322060,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pygithub","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pygithub/dependencies","status":null,"funding_links":["https://github.com/sponsors/sfdye","https://github.com/sponsors/s-t-e-v-e-n-k","https://github.com/sponsors/enricomi"],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pygithub/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pygithub/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pygithub/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pygithub/related_packages","maintainers":[{"uuid":"jacquev6","login":"jacquev6","name":null,"email":null,"url":null,"packages_count":14,"html_url":"https://pypi.org/user/jacquev6/","role":null,"created_at":"2023-02-25T03:49:43.683Z","updated_at":"2023-02-25T03:49:43.683Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/jacquev6/packages"},{"uuid":"sfdye","login":"sfdye","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://pypi.org/user/sfdye/","role":null,"created_at":"2023-02-25T03:49:43.702Z","updated_at":"2023-02-25T03:49:43.702Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/sfdye/packages"},{"uuid":"jzelinskie","login":"jzelinskie","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/jzelinskie/","role":null,"created_at":"2023-02-25T03:49:43.692Z","updated_at":"2023-02-25T03:49:43.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/jzelinskie/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690057,"maintainers_count":292646,"namespaces_count":0,"keywords_count":228482,"github":"pypi","metadata":{"funded_packages_count":48953},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-05T05:19:27.498Z","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":241,"unique_repositories_count_past_30_days":3,"recent_issues":[{"uuid":"4555529108","node_id":"PR_kwDOF8_QEs7g_sBJ","number":1989,"state":"open","title":"⬆ Bump the python-packages group across 1 directory with 9 updates","user":"dependabot[bot]","labels":["dependencies","internal","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-30T19:59:46.000Z","updated_at":"2026-05-31T06:06:01.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"⬆ Bump","group_name":"python-packages","update_count":9,"packages":[{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"zensical","old_version":"0.0.42","new_version":"0.0.43","repository_url":"https://github.com/zensical/zensical"},{"name":"fastapi","old_version":"0.136.1","new_version":"0.136.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"ruff","old_version":"0.15.13","new_version":"0.15.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"ty","old_version":"0.0.35","new_version":"0.0.39","repository_url":"https://github.com/astral-sh/ty"},{"name":"prek","old_version":"0.3.13","new_version":"0.4.1","repository_url":"https://github.com/j178/prek"},{"name":"zizmor","old_version":"1.24.1","new_version":"1.25.2","repository_url":"https://github.com/zizmorcore/zizmor"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 9 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.42` | `0.0.43` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.1` | `0.136.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.13` | `0.15.14` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.35` | `0.0.39` |\n| [prek](https://github.com/j178/prek) | `0.3.13` | `0.4.1` |\n| [zizmor](https://github.com/zizmorcore/zizmor) | `1.24.1` | `1.25.2` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.9.1` |\n\n\nUpdates `pydantic` from 2.12.5 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\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e 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/13096\"\u003e#13096\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.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e 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/13084\"\u003e#13084\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.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\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.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/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\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e 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/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e 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/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.4\"\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 `zensical` from 0.0.42 to 0.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zensical/zensical/releases\"\u003ezensical's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.43\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis version fixes further edge cases in link validation, and adds support for UTF-8 encoding with byte-order-marks.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1e873a3 \u003cstrong\u003ecompat\u003c/strong\u003e – ignore links in code after literal dollar during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/691\"\u003e#691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e62a0feb \u003cstrong\u003ezensical\u003c/strong\u003e – report \u003ccode\u003epath.md/#anchor\u003c/code\u003e as invalid during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/690\"\u003e#690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e7be40c6 \u003cstrong\u003ecompat\u003c/strong\u003e – ignore GitHub-style callouts during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/688\"\u003e#688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e85c3b1e \u003cstrong\u003ecompat\u003c/strong\u003e – ignore \u003ccode\u003e[TOC]\u003c/code\u003e marker during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/686\"\u003e#686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edaafc8b \u003cstrong\u003ezensical\u003c/strong\u003e – filter out icons folder when watching theme directories (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/693\"\u003e#693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e913fd61 \u003cstrong\u003ezensical\u003c/strong\u003e – strip Byte-Order-Mark (BOM) from Markdown files (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/687\"\u003e#687\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/7d2178a8a9df7c559a746643ccfa34f1531f20a3\"\u003e\u003ccode\u003e7d2178a\u003c/code\u003e\u003c/a\u003e chore: release v0.0.43\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/35a20425ac3a30007ed2ba9e1d54bbdae98399cd\"\u003e\u003ccode\u003e35a2042\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zensical/zensical/issues/697\"\u003e#697\u003c/a\u003e from zensical/fix/validation-regressions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/1e873a397c314843444adb68dcd5238af62dfe22\"\u003e\u003ccode\u003e1e873a3\u003c/code\u003e\u003c/a\u003e fix: ignore links in code after literal dollar during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/691\"\u003e#691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/62a0feb8f45ed10ea3c4c9816501ff1c2245f244\"\u003e\u003ccode\u003e62a0feb\u003c/code\u003e\u003c/a\u003e fix: report \u003ccode\u003epath.md/#anchor\u003c/code\u003e as invalid during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/690\"\u003e#690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/7be40c6ceb4407992a1d93cb6e30563b737e4724\"\u003e\u003ccode\u003e7be40c6\u003c/code\u003e\u003c/a\u003e fix: ignore GitHub-style callouts during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/688\"\u003e#688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/85c3b1e321dc4eaa60fc7bd885a4da509e1e4127\"\u003e\u003ccode\u003e85c3b1e\u003c/code\u003e\u003c/a\u003e fix: ignore \u003ccode\u003e[TOC]\u003c/code\u003e marker during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/686\"\u003e#686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/daafc8becba138735046b63dcf839c89c9f8c024\"\u003e\u003ccode\u003edaafc8b\u003c/code\u003e\u003c/a\u003e fix: filter out icons folder when watching theme directories (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/693\"\u003e#693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/913fd61670ae2d1a01c76388613f6378c9431a3d\"\u003e\u003ccode\u003e913fd61\u003c/code\u003e\u003c/a\u003e fix: strip Byte-Order-Mark (BOM) from Markdown files (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/687\"\u003e#687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/zensical/zensical/compare/v0.0.42...v0.0.43\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.136.1 to 0.136.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.3\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (the default). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15589\"\u003e#15589\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.2\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Validate Server Sent Event fields to avoid applications from sending broken data. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15588\"\u003e#15588\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Document \u003ccode\u003e--entrypoint\u003c/code\u003e CLI option. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15464\"\u003e#15464\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update and simplify docs about help and management. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15583\"\u003e#15583\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add docs references to central contributing docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15580\"\u003e#15580\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15577\"\u003e#15577\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🍱 Update sponsors: TalorData image. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15562\"\u003e#15562\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update docs, simplify usage of admonitions, only default ones. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15553\"\u003e#15553\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix image URLs in \u003ccode\u003eindex.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15534\"\u003e#15534\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix Azkaban spelling typo in \u003ccode\u003evirtual-environments.md‎\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15463\"\u003e#15463\u003c/a\u003e by \u003ca href=\"https://github.com/isaacbernat\"\u003e\u003ccode\u003e@​isaacbernat\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Improve layout and styling. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15462\"\u003e#15462\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Refactor opinions section with interactive tabs and new logos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15458\"\u003e#15458\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add FastAPI Conf '26 announcement to docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15457\"\u003e#15457\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Improve translation consistency in \u003ccode\u003e‎docs/pt/docs/advanced/generate-clients.md‎\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15456\"\u003e#15456\u003c/a\u003e by \u003ca href=\"https://github.com/Will-thom\"\u003e\u003ccode\u003e@​Will-thom\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15530\"\u003e#15530\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15529\"\u003e#15529\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15528\"\u003e#15528\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15527\"\u003e#15527\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15526\"\u003e#15526\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15525\"\u003e#15525\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15524\"\u003e#15524\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15522\"\u003e#15522\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15523\"\u003e#15523\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15520\"\u003e#15520\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15521\"\u003e#15521\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Fix typos in Spanish LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15472\"\u003e#15472\u003c/a\u003e by \u003ca href=\"https://github.com/crr004\"\u003e\u003ccode\u003e@​crr004\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Update tests, don't double dispose the engine. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15587\"\u003e#15587\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⚡️ Speed up test suite via caching and fixture scopes to make it ~24% faster. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13583\"\u003e#13583\u003c/a\u003e by \u003ca href=\"https://github.com/dikos1337\"\u003e\u003ccode\u003e@​dikos1337\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15585\"\u003e#15585\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump urllib3 from 2.6.3 to 2.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15502\"\u003e#15502\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump idna from 3.11 to 3.15. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15565\"\u003e#15565\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.15.0 to 4.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15571\"\u003e#15571\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Migrate docs from MkDocs to Zensical. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15563\"\u003e#15563\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15548\"\u003e#15548\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\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/fastapi/fastapi/commit/82064857539e6286522c347b4b11331b48dd2378\"\u003e\u003ccode\u003e8206485\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c910e0139f983d0e04e2d1d235cd71803afeae34\"\u003e\u003ccode\u003ec910e01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/063b5bf582d31fb155cc6bc6f88cf512329d0fd5\"\u003e\u003ccode\u003e063b5bf\u003c/code\u003e\u003c/a\u003e ♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/22b02e26f9e8c7e32bd8266e2b0ebe8bb3a0db2b\"\u003e\u003ccode\u003e22b02e2\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3b252a2a22ba27a8ab83d6bde7d9cddbc5bf738e\"\u003e\u003ccode\u003e3b252a2\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7fb7851b3389f24c51701d705458989be53ccbb\"\u003e\u003ccode\u003ec7fb785\u003c/code\u003e\u003c/a\u003e ♻️ Validate Server Sent Event fields to avoid applications from sending broke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb83b83dcf78eab4ea17d504db5abcda705fbdc4\"\u003e\u003ccode\u003ecb83b83\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/00f805cec94c0bf48c1f9a563535a3ab2e6f90ab\"\u003e\u003ccode\u003e00f805c\u003c/code\u003e\u003c/a\u003e ✅ Update tests, don't double dispose the engine (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15587\"\u003e#15587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3675137523dc167981aa3a3c44599b4f3079ccd8\"\u003e\u003ccode\u003e3675137\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7b57e42986bb4d40c9eb6580537d13fb8e76097e\"\u003e\u003ccode\u003e7b57e42\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003e--entrypoint\u003c/code\u003e CLI option (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15464\"\u003e#15464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.1...0.136.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.13 to 0.15.14\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.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\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/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\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-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\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/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\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/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\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/ntBre\"\u003e\u003ccode\u003e@​ntBre\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.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\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/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\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-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\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/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\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/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\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/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adityasingh2400\"\u003e\u003ccode\u003e@​adityasingh2400\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/9ad2da3015e5faf73bdc5f1d09df3e47238e3edf\"\u003e\u003ccode\u003e9ad2da3\u003c/code\u003e\u003c/a\u003e Bump 0.15.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25295\"\u003e#25295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c714e84952510696c05ec21b0158a3548898f594\"\u003e\u003ccode\u003ec714e84\u003c/code\u003e\u003c/a\u003e [ty] Modernize setup of union types in mdtests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25291\"\u003e#25291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a8e35ebfe318e2467a0f276e5d1a3a9032a55ad\"\u003e\u003ccode\u003e8a8e35e\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parame...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aea5ed4d278017057c2e842c6c3a2e92ad71495f\"\u003e\u003ccode\u003eaea5ed4\u003c/code\u003e\u003c/a\u003e Avoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9d72bb420f26c23e6660bfce4dfa0028b931bff\"\u003e\u003ccode\u003ee9d72bb\u003c/code\u003e\u003c/a\u003e [ty] Allow enum member accesses on \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6cbd59b511a92d5f408db57bde33367c0d47b672\"\u003e\u003ccode\u003e6cbd59b\u003c/code\u003e\u003c/a\u003e Set \u003ccode\u003eexclude-newer = \u0026quot;7 days\u0026quot;\u003c/code\u003e in our PEP-723 scripts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25285\"\u003e#25285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9999a3967ae28fe3295131e8883b6947f272a076\"\u003e\u003ccode\u003e9999a39\u003c/code\u003e\u003c/a\u003e Update code example on how to update Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/67d8c544f0d1c526a2fc60d4bb1358fd7956d178\"\u003e\u003ccode\u003e67d8c54\u003c/code\u003e\u003c/a\u003e [ty] Retain recursively-defined state in binary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25277\"\u003e#25277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/25a3191140dc0467f9d196f35c128fefde269261\"\u003e\u003ccode\u003e25a3191\u003c/code\u003e\u003c/a\u003e [ty] Refine Callable class-decorator fallback for unknown results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25250\"\u003e#25250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c423054dc09e5b644c926b6b527b6accfbe693e9\"\u003e\u003ccode\u003ec423054\u003c/code\u003e\u003c/a\u003e Add a recursion limit to the parser (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.13...0.15.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ty` from 0.0.35 to 0.0.39\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ty/releases\"\u003ety's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.39\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-22.\u003c/p\u003e\n\u003cp\u003eThis release removes the Python 3.9 branches from our vendored standard library stubs. ty now only has \u0026quot;full\u0026quot; support for\nPython 3.10 and later, but will still report version-specific syntax errors and other diagnostics when \u003ccode\u003e--python-version 3.9\u003c/code\u003e\nis provided via the CLI.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid panicking on \u003ccode\u003e__new__\u003c/code\u003e assignments to classes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25282\"\u003e#25282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve declaration order when synthesizing class fields (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25249\"\u003e#25249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003edict\u003c/code\u003e-compatible fallbacks in TypedDict unions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25242\"\u003e#25242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetain recursively-defined state in binary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25277\"\u003e#25277\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Quick Fix to remove redundant cast (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25211\"\u003e#25211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClassify property declaration semantic tokens (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25322\"\u003e#25322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEscape HTML syntax in docstring rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25247\"\u003e#25247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer symbols from standard library over those of the same name from third party libraries for import completions. (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25108\"\u003e#25108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport type aliases in document symbols (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25302\"\u003e#25302\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDiagnostics\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd error context for extra callable parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25269\"\u003e#25269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid exponential blow-up in fall-through narrowing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25278\"\u003e#25278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up include filtering for projects with many literal include patterns (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25266\"\u003e#25266\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow enum member accesses on \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit a diagnostic for subclassing with \u003ccode\u003eorder=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21704\"\u003e#21704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFull-scope bidirectional inference for unconstrained container literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25279\"\u003e#25279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInfer \u003ccode\u003edict(TypedDict)\u003c/code\u003e as \u003ccode\u003edict[str, object]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24852\"\u003e#24852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefine Callable class-decorator fallback for unknown results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25250\"\u003e#25250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject incompatible explicit variance in generic base classes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25327\"\u003e#25327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport multi-inference through type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25245\"\u003e#25245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25271\"\u003e#25271\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25172\"\u003e#25172\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/ibraheemdev\"\u003e\u003ccode\u003e@​ibraheemdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MatthewMckee4\"\u003e\u003ccode\u003e@​MatthewMckee4\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sqqueak\"\u003e\u003ccode\u003e@​sqqueak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\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/ty/blob/main/CHANGELOG.md\"\u003ety's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.39\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-22.\u003c/p\u003e\n\u003cp\u003eThis release removes the Python 3.9 branches from our vendored standard library stubs. ty now only has \u0026quot;full\u0026quot; support for\nPython 3.10 and later, but will still report version-specific syntax errors and other diagnostics when \u003ccode\u003e--python-version 3.9\u003c/code\u003e\nis provided via the CLI.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid panicking on \u003ccode\u003e__new__\u003c/code\u003e assignments to classes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25282\"\u003e#25282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve declaration order when synthesizing class fields (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25249\"\u003e#25249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003edict\u003c/code\u003e-compatible fallbacks in TypedDict unions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25242\"\u003e#25242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetain recursively-defined state in binary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25277\"\u003e#25277\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Quick Fix to remove redundant cast (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25211\"\u003e#25211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClassify property declaration semantic tokens (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25322\"\u003e#25322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEscape HTML syntax in docstring rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25247\"\u003e#25247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer symbols from standard library over those of the same name from third party libraries for import completions. (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25108\"\u003e#25108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport type aliases in document symbols (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25302\"\u003e#25302\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDiagnostics\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd error context for extra callable parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25269\"\u003e#25269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid exponential blow-up in fall-through narrowing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25278\"\u003e#25278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up include filtering for projects with many literal include patterns (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25266\"\u003e#25266\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow enum member accesses on \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit a diagnostic for subclassing with \u003ccode\u003eorder=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21704\"\u003e#21704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFull-scope bidirectional inference for unconstrained container literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25279\"\u003e#25279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInfer \u003ccode\u003edict(TypedDict)\u003c/code\u003e as \u003ccode\u003edict[str, object]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24852\"\u003e#24852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefine Callable class-decorator fallback for unknown results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25250\"\u003e#25250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject incompatible explicit variance in generic base classes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25327\"\u003e#25327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport multi-inference through type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25245\"\u003e#25245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25271\"\u003e#25271\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25172\"\u003e#25172\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/ibraheemdev\"\u003e\u003ccode\u003e@​ibraheemdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MatthewMckee4\"\u003e\u003ccode\u003e@​MatthewMckee4\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sqqueak\"\u003e\u003ccode\u003e@​sqqueak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\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/ty/commit/0205125174c135d6fc4014244dee374678b61c72\"\u003e\u003ccode\u003e0205125\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.39 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3516\"\u003e#3516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/ae8058d40e641b545bbad046c487e964206a2286\"\u003e\u003ccode\u003eae8058d\u003c/code\u003e\u003c/a\u003e Update maturin to v1.13.3 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3494\"\u003e#3494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/33b60f8ad0f2da648b867831548a4b8c7985647d\"\u003e\u003ccode\u003e33b60f8\u003c/code\u003e\u003c/a\u003e Update prek dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3495\"\u003e#3495\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/1d3efc1d68e36a8f982fa73b1f8c2a5ebc50fcde\"\u003e\u003ccode\u003e1d3efc1\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.38 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3492\"\u003e#3492\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/f5100ccde50ff577fa311add5232ae6074ed68f9\"\u003e\u003ccode\u003ef5100cc\u003c/code\u003e\u003c/a\u003e scripts/update_schemastore: use -C to allow re-running schema update on exist...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/f18aed6430c781ff3bc4fe41d9b5c2a7161657c4\"\u003e\u003ccode\u003ef18aed6\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.37 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3473\"\u003e#3473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/a63e55929645f8eeaa6f28117afda8d2ed39d1a4\"\u003e\u003ccode\u003ea63e559\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.36 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3463\"\u003e#3463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/94370d5b43c48d01720a9e65d8d8d5286b6697b1\"\u003e\u003ccode\u003e94370d5\u003c/code\u003e\u003c/a\u003e Update prek dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3449\"\u003e#3449\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/astral-sh/ty/compare/0.0.35...0.0.39\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.13 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.4.1\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-20.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix pre-push range after rebase (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2089\"\u003e#2089\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer extensions over loose filename tags (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2092\"\u003e#2092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip installs for hooks that will not run (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2103\"\u003e#2103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize meta hook file scans (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2106\"\u003e#2106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce run filtering allocations (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2090\"\u003e#2090\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/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall prek 0.4.1\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.4.1/prek-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://github.com/j178/prek/releases/download/v0.4.1/prek-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via Homebrew\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ebrew install prek\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload prek 0.4.1\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://github.com/j178/prek/releases/download/v0.4.1/prek-aarch64-apple-darwin.tar.gz\"\u003eprek-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://github.com/j178/prek/releases/download/v0.4.1/prek-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://github.com/j178/prek/releases/download/v0.4.1/prek-x86_64-apple-darwin.tar.gz\"\u003eprek-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://github.com/j178/prek/releases/download/v0.4.1/prek-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://github.com/j178/prek/releases/download/v0.4.1/prek-aarch64-pc-windows-msvc.zip\"\u003eprek-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/j178/prek/releases/download/v0.4.1/prek-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://github.com/j178/prek/releases/download/v0.4.1/prek-i686-pc-windows-msvc.zip\"\u003eprek-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/j178/prek/releases/download/v0.4.1/prek-i686-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://github.com/j178/prek/releases/download/v0.4.1/prek-x86_64-pc-windows-msvc.zip\"\u003eprek-x86_64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/j178/prek/releases/download/v0.4.1/prek-x86_64-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://github.com/j178/prek/releases/download/v0.4.1/prek-aarch64-unknown-linux-gnu.tar.gz\"\u003eprek-aarch64-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/j178/prek/releases/download/v0.4.1/prek-aarch64-unknown-linux-gnu.tar.gz.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/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.4.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-20.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix pre-push range after rebase (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2089\"\u003e#2089\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer extensions over loose filename tags (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2092\"\u003e#2092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip installs for hooks that will not run (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2103\"\u003e#2103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize meta hook file scans (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2106\"\u003e#2106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce run filtering allocations (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2090\"\u003e#2090\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/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.4.0\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cp\u003eThese are narrow cleanup breaks in behavior that was either temporary or never worked correctly. Most users should not need to change anything.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGenerated hook scripts no longer preserve \u003ccode\u003e-q\u003c/code\u003e, \u003ccode\u003e-v\u003c/code\u003e, or \u003ccode\u003e--no-progress\u003c/code\u003e passed to \u003ccode\u003eprek install\u003c/code\u003e. This only affects users who expected those global flags to be baked into installed hooks. (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1966\"\u003e#1966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage_version\u003c/code\u003e no longer accepts direct executable paths. Use \u003ccode\u003elanguage_version: system\u003c/code\u003e for a system toolchain, or use a supported version request instead. This path form did not work reliably before, so existing working configs should be unaffected. (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1831\"\u003e#1831\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExpand tilde in \u003ccode\u003e--config\u003c/code\u003e, \u003ccode\u003e--cd\u003c/code\u003e, \u003ccode\u003e--log-file\u003c/code\u003e and \u003ccode\u003e--git-dir\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2063\"\u003e#2063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent auto-update cooldown downgrades (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2055\"\u003e#2055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse managed npm cache for node hooks (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2075\"\u003e#2075\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix npm config env overrides for node hooks (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2074\"\u003e#2074\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd cookbook page for enabling Git 2.54 config-based global hooks (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2061\"\u003e#2061\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/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/871b9edb65b7978c2c53d94f60a433cb9e120132\"\u003e\u003ccode\u003e871b9ed\u003c/code\u003e\u003c/a\u003e Bump version to 0.4.1 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2107\"\u003e#2107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/3c26faf5be0c9ad0e61309650479e063b8cb0037\"\u003e\u003ccode\u003e3c26faf\u003c/code\u003e\u003c/a\u003e Optimize meta hook file scans (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2106\"\u003e#2106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/7780f1149565ff430b86be1f688dce7f680c6760\"\u003e\u003ccode\u003e7780f11\u003c/code\u003e\u003c/a\u003e Clean up run hook installation flow (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2105\"\u003e#2105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/c5dc885bcbc3d293d6c20ffb43b7be970b55b60d\"\u003e\u003ccode\u003ec5dc885\u003c/code\u003e\u003c/a\u003e Refine hook install filtering (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2104\"\u003e#2104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/9db879e92760cfa3c6da748672237a1b1d81ce12\"\u003e\u003ccode\u003e9db879e\u003c/code\u003e\u003c/a\u003e Skip installs for hooks that will not run (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2103\"\u003e#2103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/2a0da57faddae03fd6d8985776ab2ec33d0b99e5\"\u003e\u003ccode\u003e2a0da57\u003c/code\u003e\u003c/a\u003e Simplify workspace file handling (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2102\"\u003e#2102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/33ca06054451602a7988b64ac6cf12b1cf5fddad\"\u003e\u003ccode\u003e33ca060\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2072\"\u003e#2072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/03f11c00b169b9beea59253fc5a0c7efe6dc9fa6\"\u003e\u003ccode\u003e03f11c0\u003c/code\u003e\u003c/a\u003e Update GitHub Actions (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2101\"\u003e#2101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/354f431c3c0420d5be83e6c59f3b644c907793e6\"\u003e\u003ccode\u003e354f431\u003c/code\u003e\u003c/a\u003e Update dependency uv to v0.11.13 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2094\"\u003e#2094\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/4a41828a33efaccccaba76e96942314ac3309e75\"\u003e\u003ccode\u003e4a41828\u003c/code\u003e\u003c/a\u003e Update Rust crate quick-xml to v0.39.4 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2098\"\u003e#2098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/j178/prek/compare/v0.3.13...v0.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zizmor` from 1.24.1 to 1.25.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zizmorcore/zizmor/releases\"\u003ezizmor's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.25.2\u003c/h2\u003e\n\u003ch2\u003eBug Fixes 🐛\u003ca href=\"https://docs.zizmor.sh/release-notes/#bug-fixes\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where the \u003ca href=\"https://docs.zizmor.sh/audits/#unpinned-tools\"\u003eunpinned-tools\u003c/a\u003e audit would incorrectly flag the \u003ca href=\"https://github.com/aquasecurity/trivy-action\"\u003eaquasecurity/trivy-action\u003c/a\u003e action as installing an unpinned tool version, rather than \u003ca href=\"https://github.com/aquasecurity/setup-trivy\"\u003eaquasecurity/setup-trivy\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/2018\"\u003e#2018\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.25.1\u003c/h2\u003e\n\u003ch2\u003eBug Fixes 🐛\u003ca href=\"https://docs.zizmor.sh/release-notes/#bug-fixes\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a bug where the \u003ca href=\"https://docs.zizmor.sh/audits/#cache-poisoning\"\u003ecache-poisoning\u003c/a\u003e audit would fail to consider release events as exempt from cache usage findings when filtered by a tag condition (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/2004\"\u003e#2004\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a typo when suggesting --fix flags for findings (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/2010\"\u003e#2010\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/0xdea\"\u003e\u003ccode\u003e@​0xdea\u003c/code\u003e\u003c/a\u003e for implementing this fix!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a typo in \u003ca href=\"https://docs.zizmor.sh/audits/#unpinned-tools\"\u003eunpinned-tools\u003c/a\u003e annotations (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/2008\"\u003e#2008\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/martincostello\"\u003e\u003ccode\u003e@​martincostello\u003c/code\u003e\u003c/a\u003e for implementing this fix!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a bug where the \u003ca href=\"https://docs.zizmor.sh/audits/#github-app\"\u003egithub-app\u003c/a\u003e audit would incorrectly flag some safe uses of \u003ca href=\"https://github.com/actions/create-github-app-token\"\u003eactions/create-github-app-token\u003c/a\u003e as unsafe (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/2011\"\u003e#2011\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.25.0\u003c/h2\u003e\n\u003ch2\u003eNew Features 🌈\u003ca href=\"https://docs.zizmor.sh/release-notes/#new-features\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor's finding severities can now be remapped on a per-audit basis. See \u003ca href=\"https://docs.zizmor.sh/configuration/#rules-id-remap\"\u003ethe configuration\u003c/a\u003e for details (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1913\"\u003e#1913\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/Proximyst\"\u003e\u003ccode\u003e@​Proximyst\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNew audit: \u003ca href=\"https://docs.zizmor.sh/audits/#github-app\"\u003egithub-app\u003c/a\u003e detects dangerous usages of GitHub App installation tokens (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1926\"\u003e#1926\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNew audit: [unpinned-tools] detects actions that install tools without pinning to a specific version (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1820\"\u003e#1820\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor now accepts the --no-ignores flag to disable all ignore comments and configurations when reporting findings (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1935\"\u003e#1935\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor's LSP now honors the --persona flag on the CLI (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1943\"\u003e#1943\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor is now aware of Docker-based action definitions, in addition to the pre-existing support for \u0026quot;composite\u0026quot; actions (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1965\"\u003e#1965\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements\u003ca href=\"https://docs.zizmor.sh/release-notes/#enhancements\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend gh issue edit --add-label / gh pr edit --add-label as a replacement for \u003ca href=\"https://github.com/actions-ecosystem/action-add-labels\"\u003eactions-ecosystem/action-add-labels\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend gh issue edit --remove-label / gh pr edit --remove-label as a replacement for \u003ca href=\"https://github.com/actions-ecosystem/action-remove-labels\"\u003eactions-ecosystem/action-remove-labels\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend jq as a replacement for \u003ca href=\"https://github.com/sergeysova/jq-action\"\u003esergeysova/jq-action\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend git add, git commit, and git push as a replacement for \u003ca href=\"https://github.com/stefanzweifel/git-auto-commit-action\"\u003estefanzweifel/git-auto-commit-action\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend git add, git commit, and git push as a replacement for \u003ca href=\"https://github.com/EndBug/add-and-commit\"\u003eEndBug/add-and-commit\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tibdex/github-app-token\"\u003etibdex/github-app-token\u003c/a\u003e is now recognized as an archived action by \u003ca href=...\n\n_Description has been truncated_","html_url":"https://github.com/fastapi/sqlmodel/pull/1989","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Fsqlmodel/issues/1989","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1989/packages"},{"uuid":"4373355082","node_id":"PR_kwDOFvSVkM7X1-_B","number":334,"state":"closed","title":"Bump the python group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-25T00:11:04.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-04T00:10:37.000Z","updated_at":"2026-05-25T00:11:06.000Z","time_to_close":1814427,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":27,"packages":[{"name":"pillow","old_version":"12.1.1","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"redis","old_version":"7.3.0","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"django","old_version":"5.2.12","new_version":"5.2.13","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.15.0","new_version":"65.16.1","repository_url":"https://github.com/sponsors/pennersr"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-django","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"psycopg","old_version":"3.3.3","new_version":"3.3.4","repository_url":"https://github.com/psycopg/psycopg"},{"name":"django-anymail","old_version":"14.0","new_version":"15.0","repository_url":"https://github.com/anymail/django-anymail"},{"name":"werkzeug","old_version":"3.1.6","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"django-stubs","old_version":"5.2.9","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.15.6","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-debug-toolbar","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-coverage-plugin","old_version":"3.2.0","new_version":"3.2.2","repository_url":"https://github.com/coveragepy/django_coverage_plugin"},{"name":"rust-just","old_version":"1.47.0","new_version":"1.50.0","repository_url":"https://github.com/gnpaone/rust-just"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.1` | `12.2.0` |\n| [redis](https://github.com/redis/redis-py) | `7.3.0` | `7.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.3.1` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.8.1` | `2.9.1` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260503` |\n| [django](https://github.com/django/django) | `5.2.12` | `5.2.13` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.15.0` | `65.16.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-instrumentation-django](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.3.3` | `3.3.4` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `14.0` | `15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.6` | `3.1.8` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `5.2.9` | `6.0.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.6` | `0.15.12` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `6.2.0` | `6.3.0` |\n| [django-coverage-plugin](https://github.com/coveragepy/django_coverage_plugin) | `3.2.0` | `3.2.2` |\n| [rust-just](https://github.com/gnpaone/rust-just) | `1.47.0` | `1.50.0` |\n\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 `redis` from 7.3.0 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/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\u003eSee full diff in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.3.0...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release fixes a compatibility issue with Python 3.15:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/pull/218\"\u003eredis/hiredis-py#218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/3cb8f069006f7138620b065fba973ccc490bde3d\"\u003e\u003ccode\u003e3cb8f06\u003c/code\u003e\u003c/a\u003e Version 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/2836c965d28606fecfc8989059edb36a0c4fb320\"\u003e\u003ccode\u003e2836c96\u003c/code\u003e\u003c/a\u003e MNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10151\"\u003ecelery/celery#10151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove on_after_finalize signal documentation by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10155\"\u003ecelery/celery#10155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-commutative example to clarify partial arg ordering in canvas docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10157\"\u003ecelery/celery#10157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant test_isa_mapping test (fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10077\"\u003e#10077\u003c/a\u003e) by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10103\"\u003ecelery/celery#10103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10162\"\u003ecelery/celery#10162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated args from redis get_connection call by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10036\"\u003ecelery/celery#10036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/celery/celery/issues/6912\"\u003e#6912\u003c/a\u003e rpc backend reconnection error by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10179\"\u003ecelery/celery#10179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) by \u003ca href=\"https://github.com/drichardson\"\u003e\u003ccode\u003e@​drichardson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10165\"\u003ecelery/celery#10165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit by \u003ca href=\"https://github.com/tsangwailam\"\u003e\u003ccode\u003e@​tsangwailam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10181\"\u003ecelery/celery#10181\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix O(K²) message bloat in a chain of chords by \u003ca href=\"https://github.com/Borzik\"\u003e\u003ccode\u003e@​Borzik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10171\"\u003ecelery/celery#10171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mock connection interfaces to prevent \u003ccode\u003eTypeError\u003c/code\u003e during exception handling by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10178\"\u003ecelery/celery#10178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks by \u003ca href=\"https://github.com/aurangzaib048\"\u003e\u003ccode\u003e@​aurangzaib048\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10159\"\u003ecelery/celery#10159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003ereconnect_on_error\u003c/code\u003e to \u003ccode\u003eBaseResultConsumer\u003c/code\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10189\"\u003ecelery/celery#10189\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epep 649 by \u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10187\"\u003ecelery/celery#10187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix#9722 friendly status errors for CLI by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10190\"\u003ecelery/celery#10190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify after_return behavior for retried tasks by \u003ca href=\"https://github.com/KianAnbarestani\"\u003e\u003ccode\u003e@​KianAnbarestani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10192\"\u003ecelery/celery#10192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd compression header to message protocol docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10156\"\u003ecelery/celery#10156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated word in bootsteps comment by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10153\"\u003ecelery/celery#10153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove outdated autoreloader section from extending docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10154\"\u003ecelery/celery#10154\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/celery/celery/blob/v5.6.3/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.3\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-03-26\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix Django worker recursion bug + defensive checks for pool_cls.__module__ ([#10048](https://github.com/celery/celery/issues/10048))\n- Docs: Update user_preload_options example to use click. ([#10056](https://github.com/celery/celery/issues/10056))\n- Fix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo ([#10060](https://github.com/celery/celery/issues/10060))\n- Fix broken images on PyPI page ([#10066](https://github.com/celery/celery/issues/10066))\n- Remove broken reference. ([#10071](https://github.com/celery/celery/issues/10071))\n- Removed --dist=loadscope from smoke tests ([#10073](https://github.com/celery/celery/issues/10073))\n- Docs: Clarify task_retry signal args may be None ([#10076](https://github.com/celery/celery/issues/10076))\n- Update example for Django ([#10081](https://github.com/celery/celery/issues/10081))\n- Make tests compatible with pymongo \u0026gt;= 4.16 ([#10074](https://github.com/celery/celery/issues/10074))\n- fix: source install of cassandra-driver ([#10105](https://github.com/celery/celery/issues/10105))\n- fix: register task cross-reference role in Sphinx extension ([#10100](https://github.com/celery/celery/issues/10100))\n- fix: avoid cycle detection in native delayed delivery ([#10095](https://github.com/celery/celery/issues/10095))\n- fix(asynpool): avoid AttributeError when proc lacks _sentinel_poll ([#10086](https://github.com/celery/celery/issues/10086))\n- fix dusk_astronomical horizon sign (+18 -\u0026gt; -18) ([#10121](https://github.com/celery/celery/issues/10121))\n- Fix/10106 onupdate col use lambda func ([#10108](https://github.com/celery/celery/issues/10108))\n- Fix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 ([#10083](https://github.com/celery/celery/issues/10083)) ([#10123](https://github.com/celery/celery/issues/10123))\n- Fix 10109 db backend connection health ([#10124](https://github.com/celery/celery/issues/10124))\n- Database Backend filter unsupport sql engine arguments with nullpool [#7355](https://github.com/celery/celery/issues/7355) ([#10134](https://github.com/celery/celery/issues/10134))\n- fix(beat): correct argument order in Service.__reduce__ ([#10137](https://github.com/celery/celery/issues/10137))\n- ci: declare explicit read-only token permissions in workflow jobs ([#10139](https://github.com/celery/celery/issues/10139))\n- chore: 'boto3to' to 'boto3 to' ([#10133](https://github.com/celery/celery/issues/10133))\n- Database Backend: Add missing index on date_done (Fixes [#10097](https://github.com/celery/celery/issues/10097)) ([#10098](https://github.com/celery/celery/issues/10098))\n- docs: fix typo in CONTRIBUTING.rst ([#10141](https://github.com/celery/celery/issues/10141))\n- Refer to Flower / Prometheus for monitoring ([#10140](https://github.com/celery/celery/issues/10140))\n- docs: remove duplicated words in broker and routing docs ([#10146](https://github.com/celery/celery/issues/10146))\n- docs: fix stale version reference and grammar in README ([#10145](https://github.com/celery/celery/issues/10145))\n- docs: fix wording in Celery 5.3 worker pool notes ([#10149](https://github.com/celery/celery/issues/10149))\n- docs: fix duplicated wording in 3.1 changelog entry ([#10152](https://github.com/celery/celery/issues/10152))\n- docs: fix changelog typo in context manager wording ([#10144](https://github.com/celery/celery/issues/10144))\n- Fix/10096 worker fails to reconnect after redis failover ([#10151](https://github.com/celery/celery/issues/10151))\n- Improve on_after_finalize signal documentation ([#10155](https://github.com/celery/celery/issues/10155))\n- Add non-commutative example to clarify partial arg ordering in canvas docs ([#10157](https://github.com/celery/celery/issues/10157))\n- Remove redundant test_isa_mapping test (fixes [#10077](https://github.com/celery/celery/issues/10077)) ([#10103](https://github.com/celery/celery/issues/10103))\n- Upgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg ([#10162](https://github.com/celery/celery/issues/10162))\n- Remove deprecated args from redis get_connection call ([#10036](https://github.com/celery/celery/issues/10036))\n- Fix [#6912](https://github.com/celery/celery/issues/6912) rpc backend reconnection error ([#10179](https://github.com/celery/celery/issues/10179))\n- Fix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) ([#10165](https://github.com/celery/celery/issues/10165))\n- docs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit ([#10181](https://github.com/celery/celery/issues/10181))\n- Fix O(K²) message bloat in a chain of chords ([#10171](https://github.com/celery/celery/issues/10171))\n- Fix mock connection interfaces to prevent `TypeError` during exception handling ([#10178](https://github.com/celery/celery/issues/10178))\n- fix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks ([#10159](https://github.com/celery/celery/issues/10159))\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/3f4d8d795ad128bd7430cc5dc174a802cded425c\"\u003e\u003ccode\u003e3f4d8d7\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.3 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10221\"\u003e#10221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a989e8cf8876274b1f0612abffeeb2e9995ed321\"\u003e\u003ccode\u003ea989e8c\u003c/code\u003e\u003c/a\u003e fix: clear the timer while catch the exception (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10218\"\u003e#10218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d06de5f047620b0ea2bdbdb3c0c56137b79ae9a1\"\u003e\u003ccode\u003ed06de5f\u003c/code\u003e\u003c/a\u003e Chore(deps): Bump nick-fields/retry from 3 to 4 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10213\"\u003e#10213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/c3c19c31dc3e21f16d4d85a8ba8401a9223ace09\"\u003e\u003ccode\u003ec3c19c3\u003c/code\u003e\u003c/a\u003e Fix: prioritize request ignore_result over task definition (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10184\"\u003e#10184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d23be53f6f3600d48df35a797c63eb1c7d4d4b97\"\u003e\u003ccode\u003ed23be53\u003c/code\u003e\u003c/a\u003e Remove outdated autoreloader section from extending docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10154\"\u003e#10154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ada2da7475a5fa9f9ad079149a5d6864634abc28\"\u003e\u003ccode\u003eada2da7\u003c/code\u003e\u003c/a\u003e docs: fix duplicated word in bootsteps comment\\n\\nSigned-off-by: Rohan Santho...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f45f62beb3b16ae960944f8c97de13ccf15f2d0a\"\u003e\u003ccode\u003ef45f62b\u003c/code\u003e\u003c/a\u003e Add compression header to message protocol docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10156\"\u003e#10156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9a270925546ed9d0ca0303fb5006edc86b705fd9\"\u003e\u003ccode\u003e9a27092\u003c/code\u003e\u003c/a\u003e docs: clarify after_return behavior for retried tasks (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10192\"\u003e#10192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6ee6230cd80ef6c3e7482e1f4cd970fbb0629b23\"\u003e\u003ccode\u003e6ee6230\u003c/code\u003e\u003c/a\u003e Fix#9722 friendly status errors for CLI (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10190\"\u003e#10190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a9a2d4cecaf0e58c401ad6f68f022afa19770ac2\"\u003e\u003ccode\u003ea9a2d4c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10186\"\u003e#10186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.6.2...v5.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.8.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.8.1...v2.9.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.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 `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 `django-allauth` from 65.15.0 to 65.16.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\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 `opentelemetry-api` from 1.40.0 to 1.41.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/v1.41.1/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.41.1/0.62b1 (2026-04-24)\u003c/h2\u003e\n\u003ch2\u003eVersion 1.41.0/0.62b0 (2026-04-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ehost\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].host\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5002\"\u003e#5002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003econtainer\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].container\u003c/code\u003e, using entry point loading of the \u003ccode\u003eopentelemetry-resource-detector-containerid\u003c/code\u003e contrib package\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5004\"\u003e#5004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_tracer_provider\u003c/code\u003e/\u003ccode\u003econfigure_tracer_provider\u003c/code\u003e to declarative file configuration, enabling TracerProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4985\"\u003e#4985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnabled the flake8-tidy-import plugins rules for the ruff linter. These rules throw warnings for relative imports in the modules.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5019\"\u003e#5019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Fix \u003ccode\u003eAttributeError\u003c/code\u003e in \u003ccode\u003eExplicitBucketHistogramAggregation\u003c/code\u003e when applied to non-Histogram instruments without explicit boundaries\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5034\"\u003e#5034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eBatchLogRecordProcessor\u003c/code\u003e default \u003ccode\u003eschedule_delay_millis\u003c/code\u003e from 5000ms to 1000ms to comply with the OTel specification. Note: logs may be exported 5x more frequently by default (e.g. for users who don't explicitly set the \u003ccode\u003eOTEL_BLRP_SCHEDULE_DELAY\u003c/code\u003e env var).\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4998\"\u003e#4998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eprocess\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].process\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5001\"\u003e#5001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add shared \u003ccode\u003e_parse_headers\u003c/code\u003e helper for declarative config OTLP exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Replace a broad exception in attribute cleaning tests to satisfy pylint in the \u003ccode\u003elint-opentelemetry-api\u003c/code\u003e CI job\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_meter_provider\u003c/code\u003e/\u003ccode\u003econfigure_meter_provider\u003c/code\u003e to declarative file configuration, enabling MeterProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4987\"\u003e#4987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_resource\u003c/code\u003e and \u003ccode\u003ecreate_propagator\u003c/code\u003e/\u003ccode\u003econfigure_propagator\u003c/code\u003e to declarative file configuration, enabling Resource and propagator instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4979\"\u003e#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Map Python \u003ccode\u003eCRITICAL\u003c/code\u003e log level to OTel \u003ccode\u003eFATAL\u003c/code\u003e severity text per the specification\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4984\"\u003e#4984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add file configuration support with YAML/JSON loading, environment variable substitution, and schema validation against the vendored OTel config JSON schema\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4898\"\u003e#4898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix intermittent CI failures in \u003ccode\u003egetting-started\u003c/code\u003e and \u003ccode\u003etracecontext\u003c/code\u003e jobs caused by GitHub git CDN SHA propagation lag by installing contrib packages from the already-checked-out local copy instead of a second git clone\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4958\"\u003e#4958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: fix type annotations on \u003ccode\u003eMetricReader\u003c/code\u003e and related types\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4938/\"\u003e#4938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement log creation metric\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4935\"\u003e#4935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement metric reader metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4970\"\u003e#4970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement processor metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5012\"\u003e#5012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: upgrade vendored OTel configuration schema from v1.0.0-rc.3 to v1.0.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4965\"\u003e#4965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimprove check-links ci job\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4978\"\u003e#4978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve some Pyright type errors in Span/ReadableSpan and utility stubs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4973\"\u003e#4973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-prometheus\u003c/code\u003e: Fix metric name prefix\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4895\"\u003e#4895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add deepcopy support for \u003ccode\u003eBoundedAttributes\u003c/code\u003e and \u003ccode\u003eBoundedList\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4934\"\u003e#4934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-proto-json\u003c/code\u003e, \u003ccode\u003eopentelemetry-codegen-json\u003c/code\u003e: Implement custom protoc plugin to generate OTLP JSON class definitions\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/760e0248edbd01ae817941c1dfa61c07241b0727\"\u003e\u003ccode\u003e760e024\u003c/code\u003e\u003c/a\u003e Prepare release 1.41.1/0.62b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5138\"\u003e#5138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/openteleme...\n\n_Description has been truncated_","html_url":"https://github.com/mfosterw/cookiestocracy/pull/334","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfosterw%2Fcookiestocracy/issues/334","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/334/packages"},{"uuid":"4363577762","node_id":"PR_kwDOR-QXh87XYLTG","number":6,"state":"open","title":"chore(python): Bump the documentation group across 1 directory with 5 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-01T08:38:21.000Z","updated_at":"2026-05-01T08:38:22.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(python): Bump","group_name":"documentation","update_count":5,"packages":[{"name":"mkdocs-material","old_version":"9.6.1","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-macros-plugin","old_version":"1.3.7","new_version":"1.5.0","repository_url":"https://github.com/fralau/mkdocs_macros_plugin"},{"name":"markdown-exec","old_version":"1.10.0","new_version":"1.11.0","repository_url":"https://github.com/pawamoy/markdown-exec"},{"name":"pygithub","old_version":"2.6.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [numba](https://github.com/numba/numba), [mkdocs-material](https://github.com/squidfunk/mkdocs-material), [mkdocs-macros-plugin](https://github.com/fralau/mkdocs_macros_plugin), [markdown-exec](https://github.com/pawamoy/markdown-exec) and [pygithub](https://github.com/pygithub/pygithub) to permit the latest version.\nUpdates `numba` to 0.60.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numba/numba/releases\"\u003enumba's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.60.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release.\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/numba/numba/commit/53e976f1b0c6683933fa0a93738362914bffc1cd\"\u003e\u003ccode\u003e53e976f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9620\"\u003e#9620\u003c/a\u003e from esc/cherry-pick/rc-bugfixes-for-0.60.0-final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/6cee88e883bc1a6443e59578dd3e103e042cfbaf\"\u003e\u003ccode\u003e6cee88e\u003c/code\u003e\u003c/a\u003e add remaining PRs that were cherry-picked\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/38beff8db1a32664b7bcddbed93e90c5815eb9c1\"\u003e\u003ccode\u003e38beff8\u003c/code\u003e\u003c/a\u003e update change log\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/5e6270af58f70b99ec873c2b5913815f3c76c4cd\"\u003e\u003ccode\u003e5e6270a\u003c/code\u003e\u003c/a\u003e update version support table with release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/ff2e49561b1ac471526737e2c79210c639ee3782\"\u003e\u003ccode\u003eff2e495\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9603\"\u003e#9603\u003c/a\u003e from sklam/fix/avx512nocona\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/48faddf209ee25c9b445126bad3a826a39ee1fe5\"\u003e\u003ccode\u003e48faddf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9602\"\u003e#9602\u003c/a\u003e from sklam/fix/np2compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/7d1976f3cc6b5f2e7e789832d2d3eb4d42405cb1\"\u003e\u003ccode\u003e7d1976f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9586\"\u003e#9586\u003c/a\u003e from sklam/fix/bug9581\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/b3dc3dffac3b815a5841f7f794b5644c919e86c6\"\u003e\u003ccode\u003eb3dc3df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9596\"\u003e#9596\u003c/a\u003e from kc611/import-issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/056012a050c42db6597ba08527df15f6af717a94\"\u003e\u003ccode\u003e056012a\u003c/code\u003e\u003c/a\u003e Added tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/08bfe0799a12e3f0ad7d09f09493f10e03691016\"\u003e\u003ccode\u003e08bfe07\u003c/code\u003e\u003c/a\u003e Added inline_closurecall as an import during registry loading\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numba/numba/compare/0.54.0...0.60.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.6.1 to 9.7.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.7.6\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.5\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLimited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning (clarify relation with MkDocs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.4\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHardened social cards plugin by switching to sandboxed environment (recommended by \u003ca href=\"https://github.com/caveeroo\"\u003e\u003ccode\u003e@​caveeroo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning\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/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.7.6 (2026-03-19)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.5 (2026-03-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLimited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning (clarify relation with MkDocs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.4 (2026-03-03)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHardened social cards plugin by switching to sandboxed environment\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.3 (2026-02-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8567\"\u003e#8567\u003c/a\u003e: Print MkDocs 2.0 incompatibility warning to stderr\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.2 (2026-02-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to 'mkdocs build' about impending MkDocs 2.0 incompatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.1 (2025-12-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.0 (2025-11-11)\u003c/p\u003e\n\u003cp\u003e⚠️ Material for MkDocs is now in maintenance mode\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features.\nGoing forward, the Material for MkDocs team focuses on Zensical, a next-gen\nstatic site generator built from first principles. We will provide critical\nbug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003eRead the full announcement on our blog:\n\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003ehttps://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the\nInsiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003eNote on deprecated plugins: The projects and typeset plugins are included in\nthis release, but must be considered deprecated. Both plugins proved\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6c52ed6289b171a153875491f059a94819ec3e10\"\u003e\u003ccode\u003e6c52ed6\u003c/code\u003e\u003c/a\u003e Prepare 9.7.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/51d9b76636431814df924bcda27485b16023978b\"\u003e\u003ccode\u003e51d9b76\u003c/code\u003e\u003c/a\u003e Automatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6f9a48b4048650341a654d9757da57fc1e3e323d\"\u003e\u003ccode\u003e6f9a48b\u003c/code\u003e\u003c/a\u003e Updated links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/00b9933e5821fd852700268767d4fd53ae1ce1cb\"\u003e\u003ccode\u003e00b9933\u003c/code\u003e\u003c/a\u003e Prepare 9.7.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/37683d12c9cd62309aa917237741ee0886709b7c\"\u003e\u003ccode\u003e37683d1\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/199e31598055d5d6ea538618804c7558f5d81047\"\u003e\u003ccode\u003e199e315\u003c/code\u003e\u003c/a\u003e Updated warning message to clarify relation to MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/10258334eb13545e6d708cf121c3867bfbdb6017\"\u003e\u003ccode\u003e1025833\u003c/code\u003e\u003c/a\u003e Limited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/1532f523f6c650c9d6fd16229ee8bec0759b4151\"\u003e\u003ccode\u003e1532f52\u003c/code\u003e\u003c/a\u003e Added update log to blog post\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/d0c8b2862a966f5f268d4a4c35bb4fcfccebb9b1\"\u003e\u003ccode\u003ed0c8b28\u003c/code\u003e\u003c/a\u003e Updated dependencies to fix vulnerabilities\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/71d48699a0e2bef231e796818c4dc20b230a5f45\"\u003e\u003ccode\u003e71d4869\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.6.1...9.7.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-macros-plugin` from 1.3.7 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/blob/master/CHANGELOG.md\"\u003emkdocs-macros-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0, 2025-11-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: For each push, testing on github for versions Python 3.8 to 3.12\u003c/li\u003e\n\u003cli\u003eFixed: bug in import of packages when not in source dir (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1, 2025-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: support for j2_extensions paramater in config file (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: missing dependency declaration on \u003ccode\u003erequests\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0, 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved: auto-install of missing pluglet (meaningful error message \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: error with yaml dumps (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: detection of Jinja2, to allow title rendering (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall improvements to documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/0536f4da1dc643e1fa1f0cc90e71512ada67dc04\"\u003e\u003ccode\u003e0536f4d\u003c/code\u003e\u003c/a\u003e Fix type hint for compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/d9a6bc3aac5b12b86f9e2be7af18e1e9178287f6\"\u003e\u003ccode\u003ed9a6bc3\u003c/code\u003e\u003c/a\u003e Require mkdocs-test\u0026gt;=0.6.0 (compatibility with Python 3.8 and 3.9)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/bcaa72db2820d60822ffba15e87c75669abc7b92\"\u003e\u003ccode\u003ebcaa72d\u003c/code\u003e\u003c/a\u003e Make last minute corrections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/356fc2a5b55d1897a2f2c47856d52b10cff4611c\"\u003e\u003ccode\u003e356fc2a\u003c/code\u003e\u003c/a\u003e Prepare for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/aaf16bdcb9dfcb9c6ea9b6567ea4af7f8c178185\"\u003e\u003ccode\u003eaaf16bd\u003c/code\u003e\u003c/a\u003e Limit testing to 3.10 up (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/ba5356c0c263355556aa82dad0fbfde3cce4bc4d\"\u003e\u003ccode\u003eba5356c\u003c/code\u003e\u003c/a\u003e Use proper exit for pytest if Python \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/6c796600bc0886696ce9b76b84354d7e2bc1b6fa\"\u003e\u003ccode\u003e6c79660\u003c/code\u003e\u003c/a\u003e Skip test_modules.py if Python version \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cec7440d46589b303d741a5e2df0a240c25b9bdb\"\u003e\u003ccode\u003ecec7440\u003c/code\u003e\u003c/a\u003e Test installation of d2 in a cross-platform way (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/492759c5ab3d05f7c55ec62ffdf9573b715ac6ed\"\u003e\u003ccode\u003e492759c\u003c/code\u003e\u003c/a\u003e Update with changes from local repo (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cc5416834a07ffd2ba1fe3d917a701ac6e9c98ad\"\u003e\u003ccode\u003ecc54168\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of github.com:fralau/mkdocs_macros_plugin\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/compare/v1.3.7...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown-exec` from 1.10.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pawamoy/markdown-exec/releases\"\u003emarkdown-exec's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.11.0\"\u003e1.11.0\u003c/a\u003e - 2025-06-28\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.4...1.11.0\"\u003eCompare with 1.10.4\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to set height of Pyodide/Ace editors (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003ec64a2ef\u003c/a\u003e by Jayant Pranjal). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/41\"\u003eIssue-41\u003c/a\u003e, Co-authored-by: Jayant \u003ca href=\"mailto:jayant@Jayants-MacBook-Air.local\"\u003ejayant@Jayants-MacBook-Air.local\u003c/a\u003e, Co-authored-by: Timothée Mazzucotelli \u003ca href=\"mailto:dev@pawamoy.fr\"\u003edev@pawamoy.fr\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.4\"\u003e1.10.4\u003c/a\u003e - 2025-06-27\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.3...1.10.4\"\u003eCompare with 1.10.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't fail when used as Markdown extension and MkDocs is not installed (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e7722250\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://github.com/pawamoy/markdown-exec/discussions/91\"\u003eIssue-91\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.3\"\u003e1.10.3\u003c/a\u003e - 2025-03-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.2...1.10.3\"\u003eCompare with 1.10.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlso escape strings printed directly to the output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003ea668aeb\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003ee0b52b4\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.2\"\u003e1.10.2\u003c/a\u003e - 2025-03-18\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.1...1.10.2\"\u003eCompare with 1.10.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape Pyodide output, improve error handling (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/ec83f48db29708b03e8d2487ccb0d5ee0889a464\"\u003eec83f48\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync API and docs (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/1245ed96b8c5d430cc949fcfa2b9f2ef5be78f65\"\u003e1245ed9\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eMove code under internal folder (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/b132e78d2a9ebc48edd7b388e00b161eb0a048b6\"\u003eb132e78\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.1\"\u003e1.10.1\u003c/a\u003e - 2025-03-11\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.10.1\"\u003eCompare with 1.10.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd lower bound to pygments-ansi-color extra (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a8e17c9cd1bf9ba8ab5008a83c77a0b1208a1b25\"\u003ea8e17c9\u003c/a\u003e by Timothée Mazzucotelli).\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/pawamoy/markdown-exec/blob/main/CHANGELOG.md\"\u003emarkdown-exec's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.11.0\"\u003e1.11.0\u003c/a\u003e - 2025-06-28\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.4...1.11.0\"\u003eCompare with 1.10.4\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to set height of Pyodide/Ace editors (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003ec64a2ef\u003c/a\u003e by Jayant Pranjal). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/41\"\u003eIssue-41\u003c/a\u003e, Co-authored-by: Jayant \u003ca href=\"mailto:jayant@Jayants-MacBook-Air.local\"\u003ejayant@Jayants-MacBook-Air.local\u003c/a\u003e, Co-authored-by: Timothée Mazzucotelli \u003ca href=\"mailto:dev@pawamoy.fr\"\u003edev@pawamoy.fr\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.4\"\u003e1.10.4\u003c/a\u003e - 2025-06-27\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.3...1.10.4\"\u003eCompare with 1.10.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't fail when used as Markdown extension and MkDocs is not installed (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e7722250\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://github.com/pawamoy/markdown-exec/discussions/91\"\u003eIssue-91\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.3\"\u003e1.10.3\u003c/a\u003e - 2025-03-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.2...1.10.3\"\u003eCompare with 1.10.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlso escape strings printed directly to the output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003ea668aeb\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003ee0b52b4\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.2\"\u003e1.10.2\u003c/a\u003e - 2025-03-18\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.1...1.10.2\"\u003eCompare with 1.10.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eDeprecations\u003c/h3\u003e\n\u003cp\u003eExpose public API under top-level module \u003ccode\u003emarkdown_exec\u003c/code\u003e. Importing from submodules is now deprecated.\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape Pyodide output, improve error handling (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/ec83f48db29708b03e8d2487ccb0d5ee0889a464\"\u003eec83f48\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync API and docs (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/1245ed96b8c5d430cc949fcfa2b9f2ef5be78f65\"\u003e1245ed9\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eMove code under internal folder (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/b132e78d2a9ebc48edd7b388e00b161eb0a048b6\"\u003eb132e78\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.1\"\u003e1.10.1\u003c/a\u003e - 2025-03-11\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.10.1\"\u003eCompare with 1.10.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd lower bound to pygments-ansi-color extra (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a8e17c9cd1bf9ba8ab5008a83c77a0b1208a1b25\"\u003ea8e17c9\u003c/a\u003e by Timothée Mazzucotelli).\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/pawamoy/markdown-exec/commit/7d0e201a585d522225f326d3a9b57390f7253edb\"\u003e\u003ccode\u003e7d0e201\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003e\u003ccode\u003ec64a2ef\u003c/code\u003e\u003c/a\u003e feat: Add option to set height of Pyodide/Ace editors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/d64fe2e9292386d00e127188e564dbf6364fc4a9\"\u003e\u003ccode\u003ed64fe2e\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.10.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e\u003ccode\u003e7722250\u003c/code\u003e\u003c/a\u003e fix: Don't fail when used as Markdown extension and MkDocs is not installed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/449b4f1a8c73e1949d6ce906c4eeb5a50931f502\"\u003e\u003ccode\u003e449b4f1\u003c/code\u003e\u003c/a\u003e ci: Ignore Ruff warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/2aced2261e68543f0d3d2c27ea9c29c2121ecf59\"\u003e\u003ccode\u003e2aced22\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/9df9d5e38540478574a91929773f7b5dc4471a9a\"\u003e\u003ccode\u003e9df9d5e\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.10.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003e\u003ccode\u003ea668aeb\u003c/code\u003e\u003c/a\u003e fix: Also escape strings printed directly to the output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003e\u003ccode\u003ee0b52b4\u003c/code\u003e\u003c/a\u003e fix: Don't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/2aa817151013b5674cb6e9232b39e2be45851729\"\u003e\u003ccode\u003e2aa8171\u003c/code\u003e\u003c/a\u003e docs: Add deprecation note to changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.6.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.6.1...v2.9.1\"\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/Rappsilber-Laboratory/polars-free-threaded/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rappsilber-Laboratory%2Fpolars-free-threaded/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"},{"uuid":"4363381558","node_id":"PR_kwDORjVtmM7XXkFD","number":7,"state":"open","title":"chore(python): Bump the documentation group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["python","internal"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-01T07:31:39.000Z","updated_at":"2026-05-01T07:31:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(python): Bump","group_name":"documentation","update_count":5,"packages":[{"name":"mkdocs-material","old_version":"9.6.20","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-macros-plugin","old_version":"1.3.7","new_version":"1.5.0","repository_url":"https://github.com/fralau/mkdocs_macros_plugin"},{"name":"markdown-exec","old_version":"1.10.0","new_version":"1.11.0","repository_url":"https://github.com/pawamoy/markdown-exec"},{"name":"pygithub","old_version":"2.6.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [numba](https://github.com/numba/numba), [mkdocs-material](https://github.com/squidfunk/mkdocs-material), [mkdocs-macros-plugin](https://github.com/fralau/mkdocs_macros_plugin), [markdown-exec](https://github.com/pawamoy/markdown-exec) and [pygithub](https://github.com/pygithub/pygithub) to permit the latest version.\nUpdates `numba` to 0.60.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numba/numba/releases\"\u003enumba's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.60.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release.\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/numba/numba/commit/53e976f1b0c6683933fa0a93738362914bffc1cd\"\u003e\u003ccode\u003e53e976f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9620\"\u003e#9620\u003c/a\u003e from esc/cherry-pick/rc-bugfixes-for-0.60.0-final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/6cee88e883bc1a6443e59578dd3e103e042cfbaf\"\u003e\u003ccode\u003e6cee88e\u003c/code\u003e\u003c/a\u003e add remaining PRs that were cherry-picked\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/38beff8db1a32664b7bcddbed93e90c5815eb9c1\"\u003e\u003ccode\u003e38beff8\u003c/code\u003e\u003c/a\u003e update change log\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/5e6270af58f70b99ec873c2b5913815f3c76c4cd\"\u003e\u003ccode\u003e5e6270a\u003c/code\u003e\u003c/a\u003e update version support table with release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/ff2e49561b1ac471526737e2c79210c639ee3782\"\u003e\u003ccode\u003eff2e495\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9603\"\u003e#9603\u003c/a\u003e from sklam/fix/avx512nocona\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/48faddf209ee25c9b445126bad3a826a39ee1fe5\"\u003e\u003ccode\u003e48faddf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9602\"\u003e#9602\u003c/a\u003e from sklam/fix/np2compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/7d1976f3cc6b5f2e7e789832d2d3eb4d42405cb1\"\u003e\u003ccode\u003e7d1976f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9586\"\u003e#9586\u003c/a\u003e from sklam/fix/bug9581\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/b3dc3dffac3b815a5841f7f794b5644c919e86c6\"\u003e\u003ccode\u003eb3dc3df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9596\"\u003e#9596\u003c/a\u003e from kc611/import-issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/056012a050c42db6597ba08527df15f6af717a94\"\u003e\u003ccode\u003e056012a\u003c/code\u003e\u003c/a\u003e Added tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/08bfe0799a12e3f0ad7d09f09493f10e03691016\"\u003e\u003ccode\u003e08bfe07\u003c/code\u003e\u003c/a\u003e Added inline_closurecall as an import during registry loading\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numba/numba/compare/0.54.0...0.60.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.6.20 to 9.7.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.7.6\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.5\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLimited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning (clarify relation with MkDocs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.4\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHardened social cards plugin by switching to sandboxed environment (recommended by \u003ca href=\"https://github.com/caveeroo\"\u003e\u003ccode\u003e@​caveeroo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning\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/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.7.6 (2026-03-19)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.5 (2026-03-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLimited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning (clarify relation with MkDocs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.4 (2026-03-03)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHardened social cards plugin by switching to sandboxed environment\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.3 (2026-02-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8567\"\u003e#8567\u003c/a\u003e: Print MkDocs 2.0 incompatibility warning to stderr\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.2 (2026-02-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to 'mkdocs build' about impending MkDocs 2.0 incompatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.1 (2025-12-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.0 (2025-11-11)\u003c/p\u003e\n\u003cp\u003e⚠️ Material for MkDocs is now in maintenance mode\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features.\nGoing forward, the Material for MkDocs team focuses on Zensical, a next-gen\nstatic site generator built from first principles. We will provide critical\nbug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003eRead the full announcement on our blog:\n\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003ehttps://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the\nInsiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003eNote on deprecated plugins: The projects and typeset plugins are included in\nthis release, but must be considered deprecated. Both plugins proved\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6c52ed6289b171a153875491f059a94819ec3e10\"\u003e\u003ccode\u003e6c52ed6\u003c/code\u003e\u003c/a\u003e Prepare 9.7.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/51d9b76636431814df924bcda27485b16023978b\"\u003e\u003ccode\u003e51d9b76\u003c/code\u003e\u003c/a\u003e Automatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6f9a48b4048650341a654d9757da57fc1e3e323d\"\u003e\u003ccode\u003e6f9a48b\u003c/code\u003e\u003c/a\u003e Updated links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/00b9933e5821fd852700268767d4fd53ae1ce1cb\"\u003e\u003ccode\u003e00b9933\u003c/code\u003e\u003c/a\u003e Prepare 9.7.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/37683d12c9cd62309aa917237741ee0886709b7c\"\u003e\u003ccode\u003e37683d1\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/199e31598055d5d6ea538618804c7558f5d81047\"\u003e\u003ccode\u003e199e315\u003c/code\u003e\u003c/a\u003e Updated warning message to clarify relation to MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/10258334eb13545e6d708cf121c3867bfbdb6017\"\u003e\u003ccode\u003e1025833\u003c/code\u003e\u003c/a\u003e Limited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/1532f523f6c650c9d6fd16229ee8bec0759b4151\"\u003e\u003ccode\u003e1532f52\u003c/code\u003e\u003c/a\u003e Added update log to blog post\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/d0c8b2862a966f5f268d4a4c35bb4fcfccebb9b1\"\u003e\u003ccode\u003ed0c8b28\u003c/code\u003e\u003c/a\u003e Updated dependencies to fix vulnerabilities\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/71d48699a0e2bef231e796818c4dc20b230a5f45\"\u003e\u003ccode\u003e71d4869\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.6.20...9.7.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-macros-plugin` from 1.3.7 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/blob/master/CHANGELOG.md\"\u003emkdocs-macros-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0, 2025-11-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: For each push, testing on github for versions Python 3.8 to 3.12\u003c/li\u003e\n\u003cli\u003eFixed: bug in import of packages when not in source dir (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1, 2025-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: support for j2_extensions paramater in config file (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: missing dependency declaration on \u003ccode\u003erequests\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0, 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved: auto-install of missing pluglet (meaningful error message \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: error with yaml dumps (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: detection of Jinja2, to allow title rendering (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall improvements to documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/0536f4da1dc643e1fa1f0cc90e71512ada67dc04\"\u003e\u003ccode\u003e0536f4d\u003c/code\u003e\u003c/a\u003e Fix type hint for compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/d9a6bc3aac5b12b86f9e2be7af18e1e9178287f6\"\u003e\u003ccode\u003ed9a6bc3\u003c/code\u003e\u003c/a\u003e Require mkdocs-test\u0026gt;=0.6.0 (compatibility with Python 3.8 and 3.9)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/bcaa72db2820d60822ffba15e87c75669abc7b92\"\u003e\u003ccode\u003ebcaa72d\u003c/code\u003e\u003c/a\u003e Make last minute corrections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/356fc2a5b55d1897a2f2c47856d52b10cff4611c\"\u003e\u003ccode\u003e356fc2a\u003c/code\u003e\u003c/a\u003e Prepare for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/aaf16bdcb9dfcb9c6ea9b6567ea4af7f8c178185\"\u003e\u003ccode\u003eaaf16bd\u003c/code\u003e\u003c/a\u003e Limit testing to 3.10 up (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/ba5356c0c263355556aa82dad0fbfde3cce4bc4d\"\u003e\u003ccode\u003eba5356c\u003c/code\u003e\u003c/a\u003e Use proper exit for pytest if Python \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/6c796600bc0886696ce9b76b84354d7e2bc1b6fa\"\u003e\u003ccode\u003e6c79660\u003c/code\u003e\u003c/a\u003e Skip test_modules.py if Python version \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cec7440d46589b303d741a5e2df0a240c25b9bdb\"\u003e\u003ccode\u003ecec7440\u003c/code\u003e\u003c/a\u003e Test installation of d2 in a cross-platform way (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/492759c5ab3d05f7c55ec62ffdf9573b715ac6ed\"\u003e\u003ccode\u003e492759c\u003c/code\u003e\u003c/a\u003e Update with changes from local repo (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cc5416834a07ffd2ba1fe3d917a701ac6e9c98ad\"\u003e\u003ccode\u003ecc54168\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of github.com:fralau/mkdocs_macros_plugin\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/compare/v1.3.7...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown-exec` from 1.10.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pawamoy/markdown-exec/releases\"\u003emarkdown-exec's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.11.0\"\u003e1.11.0\u003c/a\u003e - 2025-06-28\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.4...1.11.0\"\u003eCompare with 1.10.4\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to set height of Pyodide/Ace editors (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003ec64a2ef\u003c/a\u003e by Jayant Pranjal). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/41\"\u003eIssue-41\u003c/a\u003e, Co-authored-by: Jayant \u003ca href=\"mailto:jayant@Jayants-MacBook-Air.local\"\u003ejayant@Jayants-MacBook-Air.local\u003c/a\u003e, Co-authored-by: Timothée Mazzucotelli \u003ca href=\"mailto:dev@pawamoy.fr\"\u003edev@pawamoy.fr\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.4\"\u003e1.10.4\u003c/a\u003e - 2025-06-27\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.3...1.10.4\"\u003eCompare with 1.10.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't fail when used as Markdown extension and MkDocs is not installed (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e7722250\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://github.com/pawamoy/markdown-exec/discussions/91\"\u003eIssue-91\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.3\"\u003e1.10.3\u003c/a\u003e - 2025-03-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.2...1.10.3\"\u003eCompare with 1.10.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlso escape strings printed directly to the output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003ea668aeb\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003ee0b52b4\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.2\"\u003e1.10.2\u003c/a\u003e - 2025-03-18\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.1...1.10.2\"\u003eCompare with 1.10.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape Pyodide output, improve error handling (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/ec83f48db29708b03e8d2487ccb0d5ee0889a464\"\u003eec83f48\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync API and docs (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/1245ed96b8c5d430cc949fcfa2b9f2ef5be78f65\"\u003e1245ed9\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eMove code under internal folder (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/b132e78d2a9ebc48edd7b388e00b161eb0a048b6\"\u003eb132e78\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.1\"\u003e1.10.1\u003c/a\u003e - 2025-03-11\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.10.1\"\u003eCompare with 1.10.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd lower bound to pygments-ansi-color extra (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a8e17c9cd1bf9ba8ab5008a83c77a0b1208a1b25\"\u003ea8e17c9\u003c/a\u003e by Timothée Mazzucotelli).\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/pawamoy/markdown-exec/blob/main/CHANGELOG.md\"\u003emarkdown-exec's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.11.0\"\u003e1.11.0\u003c/a\u003e - 2025-06-28\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.4...1.11.0\"\u003eCompare with 1.10.4\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to set height of Pyodide/Ace editors (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003ec64a2ef\u003c/a\u003e by Jayant Pranjal). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/41\"\u003eIssue-41\u003c/a\u003e, Co-authored-by: Jayant \u003ca href=\"mailto:jayant@Jayants-MacBook-Air.local\"\u003ejayant@Jayants-MacBook-Air.local\u003c/a\u003e, Co-authored-by: Timothée Mazzucotelli \u003ca href=\"mailto:dev@pawamoy.fr\"\u003edev@pawamoy.fr\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.4\"\u003e1.10.4\u003c/a\u003e - 2025-06-27\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.3...1.10.4\"\u003eCompare with 1.10.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't fail when used as Markdown extension and MkDocs is not installed (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e7722250\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://github.com/pawamoy/markdown-exec/discussions/91\"\u003eIssue-91\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.3\"\u003e1.10.3\u003c/a\u003e - 2025-03-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.2...1.10.3\"\u003eCompare with 1.10.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlso escape strings printed directly to the output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003ea668aeb\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003ee0b52b4\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.2\"\u003e1.10.2\u003c/a\u003e - 2025-03-18\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.1...1.10.2\"\u003eCompare with 1.10.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eDeprecations\u003c/h3\u003e\n\u003cp\u003eExpose public API under top-level module \u003ccode\u003emarkdown_exec\u003c/code\u003e. Importing from submodules is now deprecated.\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape Pyodide output, improve error handling (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/ec83f48db29708b03e8d2487ccb0d5ee0889a464\"\u003eec83f48\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync API and docs (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/1245ed96b8c5d430cc949fcfa2b9f2ef5be78f65\"\u003e1245ed9\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eMove code under internal folder (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/b132e78d2a9ebc48edd7b388e00b161eb0a048b6\"\u003eb132e78\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.1\"\u003e1.10.1\u003c/a\u003e - 2025-03-11\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.10.1\"\u003eCompare with 1.10.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd lower bound to pygments-ansi-color extra (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a8e17c9cd1bf9ba8ab5008a83c77a0b1208a1b25\"\u003ea8e17c9\u003c/a\u003e by Timothée Mazzucotelli).\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/pawamoy/markdown-exec/commit/7d0e201a585d522225f326d3a9b57390f7253edb\"\u003e\u003ccode\u003e7d0e201\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003e\u003ccode\u003ec64a2ef\u003c/code\u003e\u003c/a\u003e feat: Add option to set height of Pyodide/Ace editors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/d64fe2e9292386d00e127188e564dbf6364fc4a9\"\u003e\u003ccode\u003ed64fe2e\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.10.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e\u003ccode\u003e7722250\u003c/code\u003e\u003c/a\u003e fix: Don't fail when used as Markdown extension and MkDocs is not installed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/449b4f1a8c73e1949d6ce906c4eeb5a50931f502\"\u003e\u003ccode\u003e449b4f1\u003c/code\u003e\u003c/a\u003e ci: Ignore Ruff warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/2aced2261e68543f0d3d2c27ea9c29c2121ecf59\"\u003e\u003ccode\u003e2aced22\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/9df9d5e38540478574a91929773f7b5dc4471a9a\"\u003e\u003ccode\u003e9df9d5e\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.10.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003e\u003ccode\u003ea668aeb\u003c/code\u003e\u003c/a\u003e fix: Also escape strings printed directly to the output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003e\u003ccode\u003ee0b52b4\u003c/code\u003e\u003c/a\u003e fix: Don't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/2aa817151013b5674cb6e9232b39e2be45851729\"\u003e\u003ccode\u003e2aa8171\u003c/code\u003e\u003c/a\u003e docs: Add deprecation note to changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.6.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.6.1...v2.9.1\"\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/GoWithMe-AI/polars/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoWithMe-AI%2Fpolars/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"},{"uuid":"4363011697","node_id":"PR_kwDOEvf2G87XWZEg","number":1322,"state":"open","title":"⬆️ Bump pygithub from 2.9.0 to 2.9.1","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-05-01T05:31:56.000Z","updated_at":"2026-05-01T05:37:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"⬆️ Bump","packages":[{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.9.0 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\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=pygithub\u0026package-manager=pip\u0026previous-version=2.9.0\u0026new-version=2.9.1)](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/duck-dynasty/duckbot/pull/1322","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/duck-dynasty%2Fduckbot/issues/1322","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1322/packages"},{"uuid":"4362366814","node_id":"PR_kwDORf90e87XUVuB","number":78,"state":"open","title":":dependabot: uv(deps): Bump the minor-and-patch group with 5 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-01T01:55:38.000Z","updated_at":"2026-05-01T01:55:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":":dependabot: uv(deps): Bump","group_name":"minor-and-patch","update_count":5,"packages":[{"name":"authlib","old_version":"1.6.9","new_version":"1.6.11","repository_url":"https://github.com/authlib/authlib"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"sentry-sdk","old_version":"2.57.0","new_version":"2.58.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"ruff","old_version":"0.15.10","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"zizmor","old_version":"1.23.1","new_version":"1.24.1","repository_url":"https://github.com/zizmorcore/zizmor"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [authlib](https://github.com/authlib/authlib) | `1.6.9` | `1.6.11` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.9.1` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.57.0` | `2.58.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.10` | `0.15.11` |\n| [zizmor](https://github.com/zizmorcore/zizmor) | `1.23.1` | `1.24.1` |\n\nUpdates `authlib` from 1.6.9 to 1.6.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.6.11\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.10...v1.6.11\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.10...v1.6.11\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CSRF issue with starlette client\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.6.10\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.9...v1.6.10\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.9...v1.6.10\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix redirecting to unvalidated \u003ccode\u003eredirect_uri\u003c/code\u003e on \u003ccode\u003eUnsupportedResponseTypeError\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/blob/v1.6.11/docs/changelog.rst\"\u003eauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.6.11\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eReleased on Apr 16, 2026\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CSRF vulnerability in the Starlette OAuth client when a \u003ccode\u003ecache\u003c/code\u003e is\nconfigured.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.6.10\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eReleased on Apr 13, 2026\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix redirecting to unvalidated \u003ccode\u003eredirect_uri\u003c/code\u003e on \u003ccode\u003eUnsupportedResponseTypeError\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/0dc0e5b4dc84f155319518a3732113af6fa47525\"\u003e\u003ccode\u003e0dc0e5b\u003c/code\u003e\u003c/a\u003e chore: bump to 1.6.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/aa7b8e46e00d0622658666476782042ac00153a5\"\u003e\u003ccode\u003eaa7b8e4\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/401a7709c3fe43bce1b2105d16a475b688faa788\"\u003e\u003ccode\u003e401a770\u003c/code\u003e\u003c/a\u003e fix: CSRF issue with starlette client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/ef09aebbba4439dedb22bd15777d1b3458b6f0ab\"\u003e\u003ccode\u003eef09aeb\u003c/code\u003e\u003c/a\u003e chore: release 1.6.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/3be08468201a7766a93012ce149ea12822cab096\"\u003e\u003ccode\u003e3be0846\u003c/code\u003e\u003c/a\u003e fix: redirecting to unvalidated redirect_uri on UnsupportedResponseTypeError\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.9...v1.6.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.9.0 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.57.0 to 2.58.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.58.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Redact base64 data URLs in image_url content blocks by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5953\"\u003e#5953\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(integrations) Instrument pyreqwest tracing by \u003ca href=\"https://github.com/servusdei2018\"\u003e\u003ccode\u003e@​servusdei2018\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5682\"\u003e#5682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Add async callbacks by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5969\"\u003e#5969\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCapture exceptions for \u003ccode\u003estream()\u003c/code\u003e calls by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5950\"\u003e#5950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop setting transaction status when child span fails by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in .create() patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5716\"\u003e#5716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdapt import for new library versions by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5984\"\u003e#5984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse first-class hooks when available by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5947\"\u003e#5947\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(huggingface_hub) Stop setting transaction status when a child span fails by \u003ca href=\"https://github.com/Zenithatic\"\u003e\u003ccode\u003e@​Zenithatic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5952\"\u003e#5952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Avoid double span exits when streaming by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5933\"\u003e#5933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi) Respect HTTP_X_FORWARDED_PROTO in request.url construction by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5963\"\u003e#5963\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eLitellm\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in rate-limit test by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5975\"\u003e#5975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in embedding tests by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5970\"\u003e#5970\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in nonstreaming \u003ccode\u003ecompletion()\u003c/code\u003e tests by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5937\"\u003e#5937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dead attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5985\"\u003e#5985\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Remove \u003ccode\u003egen_ai.tool.type\u003c/code\u003e span attribute by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5964\"\u003e#5964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Separate sync and async .create() patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5715\"\u003e#5715\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Split token counting by API for easier deprecation by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5930\"\u003e#5930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai-agents) Remove error attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5986\"\u003e#5986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(opentelemetry) Ignore mypy error by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5927\"\u003e#5927\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (04/13) by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5983\"\u003e#5983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix license metadata in setup.py by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5934\"\u003e#5934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate validate-pr workflow by \u003ca href=\"https://github.com/stephanie-anderson\"\u003e\u003ccode\u003e@​stephanie-anderson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5931\"\u003e#5931\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eNone\u003c/code\u003e span context in the span processor and pin tokenizers version for anthropic tests on Python 3.8 by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5967\"\u003e#5967\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/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.58.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Redact base64 data URLs in image_url content blocks by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5953\"\u003e#5953\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(integrations) Instrument pyreqwest tracing by \u003ca href=\"https://github.com/servusdei2018\"\u003e\u003ccode\u003e@​servusdei2018\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5682\"\u003e#5682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Add async callbacks by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5969\"\u003e#5969\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCapture exceptions for \u003ccode\u003estream()\u003c/code\u003e calls by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5950\"\u003e#5950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop setting transaction status when child span fails by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in .create() patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5716\"\u003e#5716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdapt import for new library versions by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5984\"\u003e#5984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse first-class hooks when available by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5947\"\u003e#5947\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(huggingface_hub) Stop setting transaction status when a child span fails by \u003ca href=\"https://github.com/Zenithatic\"\u003e\u003ccode\u003e@​Zenithatic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5952\"\u003e#5952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Avoid double span exits when streaming by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5933\"\u003e#5933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi) Respect HTTP_X_FORWARDED_PROTO in request.url construction by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5963\"\u003e#5963\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eLitellm\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in rate-limit test by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5975\"\u003e#5975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in embedding tests by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5970\"\u003e#5970\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in nonstreaming \u003ccode\u003ecompletion()\u003c/code\u003e tests by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5937\"\u003e#5937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dead attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5985\"\u003e#5985\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Remove \u003ccode\u003egen_ai.tool.type\u003c/code\u003e span attribute by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5964\"\u003e#5964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Separate sync and async .create() patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5715\"\u003e#5715\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Split token counting by API for easier deprecation by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5930\"\u003e#5930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai-agents) Remove error attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5986\"\u003e#5986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(opentelemetry) Ignore mypy error by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5927\"\u003e#5927\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (04/13) by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5983\"\u003e#5983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix license metadata in setup.py by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5934\"\u003e#5934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate validate-pr workflow by \u003ca href=\"https://github.com/stephanie-anderson\"\u003e\u003ccode\u003e@​stephanie-anderson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5931\"\u003e#5931\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eNone\u003c/code\u003e span context in the span processor and pin tokenizers version for anthropic tests on Python 3.8 by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5967\"\u003e#5967\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/getsentry/sentry-python/commit/ce445d96977ec083b97495c917aa0c3ce453689d\"\u003e\u003ccode\u003ece445d9\u003c/code\u003e\u003c/a\u003e release: 2.58.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/c0c0e9cfc8536f0d9ba22925e4bea17034138cd0\"\u003e\u003ccode\u003ec0c0e9c\u003c/code\u003e\u003c/a\u003e feat(litellm): Add async callbacks (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5969\"\u003e#5969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/ea74b63881d2cf1d71130a8b6ef4dfff4e4cd337\"\u003e\u003ccode\u003eea74b63\u003c/code\u003e\u003c/a\u003e test(litellm): Replace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in rate-limit test (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5975\"\u003e#5975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/06ed1bca2f9302055ba43dc058f5afcc731b8d79\"\u003e\u003ccode\u003e06ed1bc\u003c/code\u003e\u003c/a\u003e test(litellm): Replace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in embedding tests (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5970\"\u003e#5970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/66ef2e6976a1ae86e97aca08cbc806f9e579f324\"\u003e\u003ccode\u003e66ef2e6\u003c/code\u003e\u003c/a\u003e test(litellm): Replace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in nonstreaming `completion()...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/96ebbf67d91146ebb30be6e0898a637ea6c2c697\"\u003e\u003ccode\u003e96ebbf6\u003c/code\u003e\u003c/a\u003e fix(litellm): Avoid double span exits when streaming (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5933\"\u003e#5933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7e22b5dc3447a5bee71574a5c22934e5aa8a7642\"\u003e\u003ccode\u003e7e22b5d\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 8.0.0 to 9.0.0 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5979\"\u003e#5979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/35151a90a98affa0d72f7cb8b314a8fb54ac8b51\"\u003e\u003ccode\u003e35151a9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5980\"\u003e#5980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/d1c5b53096e76353e2aa3ffdd8a845f38bb04bb6\"\u003e\u003ccode\u003ed1c5b53\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/create-github-app-token from 3.0.0 to 3.1.1 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5981\"\u003e#5981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e255aafa913955eed43333aa204f1476d9dc1ff2\"\u003e\u003ccode\u003ee255aaf\u003c/code\u003e\u003c/a\u003e build(deps): bump getsentry/testing-ai-sdk-integrations from 6b1f51ec8af03e19...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.57.0...2.58.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.10 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\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/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.10...0.15.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zizmor` from 1.23.1 to 1.24.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zizmorcore/zizmor/releases\"\u003ezizmor's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.24.1\u003c/h2\u003e\n\u003ch2\u003eBug Fixes 🐛\u003ca href=\"https://docs.zizmor.sh/release-notes/#bug-fixes\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where the \u003ca href=\"https://docs.zizmor.sh/audits/#ref-version-mismatch\"\u003eref-version-mismatch\u003c/a\u003e audit would incorrectly flag some version comments as not containing an appropriate version (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1900\"\u003e#1900\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.24.0\u003c/h2\u003e\n\u003ch2\u003eNew Features 🌈\u003ca href=\"https://docs.zizmor.sh/release-notes/#new-features\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ezizmor now allows users to audit from stdin, by passing zizmor - (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1611\"\u003e#1611\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements 🌱\u003ca href=\"https://docs.zizmor.sh/release-notes/#enhancements\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#use-trusted-publishing\"\u003euse-trusted-publishing\u003c/a\u003e audit now detects bun publish and bunx npm publish patterns (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1737\"\u003e#1737\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor's CLI help and usage output now uses a custom color scheme for improved readability (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1747\"\u003e#1747\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#secrets-outside-env\"\u003esecrets-outside-env\u003c/a\u003e audit is now configurable with an allowlist of secret names that should not be flagged, even when referenced outside of an environment (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1759\"\u003e#1759\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/rmuir\"\u003e\u003ccode\u003e@​rmuir\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#dependabot-cooldown\"\u003edependabot-cooldown\u003c/a\u003e audit now emits a pedantic finding whenever it encounters a cooldown used with a multi-ecosystem-group, as the two do not interact well (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1780\"\u003e#1780\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend gh release upload as a replacement for \u003ca href=\"https://github.com/svenstaro/upload-release-action\"\u003esvenstaro/upload-release-action\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1801\"\u003e#1801\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend gh issue create as a replacement for \u003ca href=\"https://github.com/dacbd/create-issue-action\"\u003edacbd/create-issue-action\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1873\"\u003e#1873\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#obfuscation\"\u003eobfuscation\u003c/a\u003e audit now emits a finding for with: ${{ expr }} clauses cannot be analyzed (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor --help is now rendered with option groups for improved readability (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1831\"\u003e#1831\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/deckstose\"\u003e\u003ccode\u003e@​deckstose\u003c/code\u003e\u003c/a\u003e for implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor's SARIF output now uses codeflows instead of related locations, improving its rendering behavior on GitHub Advanced Security (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#ref-version-mismatch\"\u003eref-version-mismatch\u003c/a\u003e audit now uses a more useful audit description for its findings (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#unpinned-images\"\u003eunpinned-images\u003c/a\u003e audit now produces more precise findings for image references that are computed through expressions (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1756\"\u003e#1756\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/miketheman\"\u003e\u003ccode\u003e@​miketheman\u003c/code\u003e\u003c/a\u003e for implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#ref-version-mismatch\"\u003eref-version-mismatch\u003c/a\u003e audit now detects missing version comments as well (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1849\"\u003e#1849\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes 🐛\u003ca href=\"https://docs.zizmor.sh/release-notes/#bug-fixes\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where the \u003ca href=\"https://docs.zizmor.sh/audits/#concurrency-limits\"\u003econcurrency-limits\u003c/a\u003e audit reported findings at the job level instead of the workflow level (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1627\"\u003e#1627\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/zizmorcore/zizmor/blob/main/docs/release-notes.md\"\u003ezizmor's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.24.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where the [ref-version-mismatch] audit would incorrectly flag\nsome version comments as not containing an appropriate version (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1900\"\u003e#1900\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.24.0\u003c/h2\u003e\n\u003ch3\u003eNew Features 🌈\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ezizmor\u003c/code\u003e now allows users to audit from stdin, by passing \u003ccode\u003ezizmor -\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1611\"\u003e#1611\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🌱\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe [use-trusted-publishing] audit now detects \u003ccode\u003ebun publish\u003c/code\u003e and \u003ccode\u003ebunx npm publish\u003c/code\u003e\npatterns (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1737\"\u003e#1737\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ezizmor\u003c/code\u003e's CLI help and usage output now uses a custom color scheme for\nimproved readability (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1747\"\u003e#1747\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe [secrets-outside-env] audit is now configurable with an allowlist of\nsecret names that should not be flagged, even when referenced outside of\nan environment (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1759\"\u003e#1759\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/rmuir\"\u003e\u003ccode\u003e@​rmuir\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe [dependabot-cooldown] audit now emits a pedantic finding whenever\nit encounters a cooldown used with a multi-ecosystem-group, as the two\ndo not interact well (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1780\"\u003e#1780\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend \u003ccode\u003egh release upload\u003c/code\u003e as a replacement for \u003ccode\u003e@​svenstaro/upload-release-action\u003c/code\u003e in\n[superfluous-actions] (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1801\"\u003e#1801\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend \u003ccode\u003egh issue create\u003c/code\u003e as a replacement for \u003ccode\u003e@​dacbd/create-issue-action\u003c/code\u003e in\n[superfluous-actions] (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1873\"\u003e#1873\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe [obfuscation] audit now emits a finding for \u003ccode\u003ewith: ${{ expr }}\u003c/code\u003e\nclauses cannot be analyzed (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ezizmor --help\u003c/code\u003e is now rendered with option groups for improved readability (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1831\"\u003e#1831\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/deckstose\"\u003e\u003ccode\u003e@​deckstose\u003c/code\u003e\u003c/a\u003e for implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor's SARIF output now uses codeflows instead of related locations,\nimproving its rendering behavior on GitHub Advanced Security (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe [ref-version-mismatch] audit now uses a more useful audit description\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/zizmorcore/zizmor/commit/2eaf42bcccfed62978cee0905902acbc294d5123\"\u003e\u003ccode\u003e2eaf42b\u003c/code\u003e\u003c/a\u003e ref-version-mismatch: handle version comments without v prefix (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1900\"\u003e#1900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/a3b72b8f26946fd057c016d5ec83b77cc4cfdad2\"\u003e\u003ccode\u003ea3b72b8\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1897\"\u003e#1897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/d5aba605f4267b96e34775de183955ff0a3197ad\"\u003e\u003ccode\u003ed5aba60\u003c/code\u003e\u003c/a\u003e zizmor v1.24.0 (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1890\"\u003e#1890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/1e762ac3c0354d68ddcac0ccc0af6879e8b38aa6\"\u003e\u003ccode\u003e1e762ac\u003c/code\u003e\u003c/a\u003e zizmor v1.24.0-rc3 (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1889\"\u003e#1889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/b79c9dc84c096d6c7becabd9581c61c9347bf4f7\"\u003e\u003ccode\u003eb79c9dc\u003c/code\u003e\u003c/a\u003e Fix release CI (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1888\"\u003e#1888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/eb113ad5c5f8c25c79dd0b4705d420096a35ba2d\"\u003e\u003ccode\u003eeb113ad\u003c/code\u003e\u003c/a\u003e Unify crate versions and publishing (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1887\"\u003e#1887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/91bcb96244214bea0d62982fba3bc825f9604af9\"\u003e\u003ccode\u003e91bcb96\u003c/code\u003e\u003c/a\u003e Use the GitHub client's host correctly in two more places (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1881\"\u003e#1881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/3ed8316a1ce22a3f9c887c1021992ca19d31dce4\"\u003e\u003ccode\u003e3ed8316\u003c/code\u003e\u003c/a\u003e chore: use \u003ccode\u003etracing\u003c/code\u003e for printing the welcome message (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1886\"\u003e#1886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/484acedf381a7553f663309b44def3b7953fb4d8\"\u003e\u003ccode\u003e484aced\u003c/code\u003e\u003c/a\u003e feat(ref-version-mismatch): detect missing version comments on SHA-pinned act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/7ee374f5db0b69b96ef4f7ba89d0c33c8a93a7ba\"\u003e\u003ccode\u003e7ee374f\u003c/code\u003e\u003c/a\u003e KATs for GitHub Actions expressions (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1857\"\u003e#1857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zizmorcore/zizmor/compare/v1.23.1...v1.24.1\"\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/ministryofjustice/modernisation-platform-ui/pull/78","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ministryofjustice%2Fmodernisation-platform-ui/issues/78","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/78/packages"},{"uuid":"4339498308","node_id":"PR_kwDOQfFqPM7WJZ1s","number":17,"state":"open","title":"deps: update pygithub requirement from \u003e=2.1.1 to \u003e=2.9.1","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-27T23:36:36.000Z","updated_at":"2026-04-27T23:37:10.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: update","packages":[{"name":"pygithub","old_version":"\u003e=2.1.1","new_version":"\u003e=2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [pygithub](https://github.com/pygithub/pygithub) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.1.1...v2.9.1\"\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 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\n\n\u003c!-- This is an auto-generated description by cubic. --\u003e\n---\n## Summary by cubic\nBump `PyGithub` to \u003e=2.9.1 to pick up recent fixes and improvements, including lazy object support and a fix for fetching releases by tag. No code changes required.\n\n\u003csup\u003eWritten for commit 69c3d1b6883525e6970b92ae59f3c578732f36ee. Summary will update on new commits. \u003ca href=\"https://cubic.dev/pr/Joker5514/workflow-failure-copilot/pull/17?utm_source=github\"\u003eReview in cubic\u003c/a\u003e\u003c/sup\u003e\n\n\u003c!-- End of auto-generated description by cubic. --\u003e\n\n","html_url":"https://github.com/Joker5514/workflow-failure-copilot/pull/17","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joker5514%2Fworkflow-failure-copilot/issues/17","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/17/packages"},{"uuid":"4333770140","node_id":"PR_kwDOOuks_87V27QJ","number":209,"state":"closed","title":"chore: bump the patch-updates group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["ignore-for-release","dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-04T07:20:48.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-27T07:07:04.000Z","updated_at":"2026-05-04T07:20:59.000Z","time_to_close":605624,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"patch-updates","update_count":8,"packages":[{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"mypy","old_version":"1.20.0","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.15.9","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"commitizen","old_version":"4.13.9","new_version":"4.13.10","repository_url":"https://github.com/commitizen-tools/commitizen"},{"name":"click","old_version":"8.3.2","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"gitpython","old_version":"3.1.46","new_version":"3.1.47","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"fastmcp","old_version":"3.2.0","new_version":"3.2.4","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-updates group with 8 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [mypy](https://github.com/python/mypy) | `1.20.0` | `1.20.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.9` | `0.15.12` |\n| [commitizen](https://github.com/commitizen-tools/commitizen) | `4.13.9` | `4.13.10` |\n| [click](https://github.com/pallets/click) | `8.3.2` | `8.3.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.9.1` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.46` | `3.1.47` |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.2.0` | `3.2.4` |\n\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 `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\u003ch3\u003eMypy 1.20.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse WAL with SQLite cache and fix close (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21154\"\u003e21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust SQLite journal mode (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21217\"\u003e21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly aggregate narrowing information on parent expressions (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21206\"\u003e21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression related to generic callables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21208\"\u003e21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression by avoiding widening types in some contexts (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21242\"\u003e21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing in non-strict optional mode (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21282\"\u003e21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix match statement semantics for \u0026quot;or\u0026quot; pattern (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21156\"\u003e21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix issue with module dunder attributes (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21275\"\u003e21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInitial support for Python 3.15.0a8 (Marc Mueller, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21255\"\u003e21255\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eAaron Wieczorek\u003c/li\u003e\n\u003cli\u003eAdam Turner\u003c/li\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003easce\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrent Westbrook\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChris Burroughs\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eColin Watson\u003c/li\u003e\n\u003cli\u003eDonghoon Nam\u003c/li\u003e\n\u003cli\u003eE. M. Bray\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eGeorge Ogden\u003c/li\u003e\n\u003cli\u003egetzze\u003c/li\u003e\n\u003cli\u003egrayjk\u003c/li\u003e\n\u003cli\u003eGregor Riepl\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilliard\u003c/li\u003e\n\u003cli\u003eJames Le Cuirot\u003c/li\u003e\n\u003cli\u003eJeremy Nimmer\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKai (Kazuya Ito)\u003c/li\u003e\n\u003cli\u003ekaushal trivedi\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eLukas Geiger\u003c/li\u003e\n\u003cli\u003eŁukasz Langa\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael R. Crusoe\u003c/li\u003e\n\u003cli\u003emichaelm-openai\u003c/li\u003e\n\u003cli\u003eNeil Schemenauer\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/145a062651b5f9996b75ef32b7040bd2e885ed82\"\u003e\u003ccode\u003e145a062\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/81cd49215c288eacb987de066f02daff2553b7c7\"\u003e\u003ccode\u003e81cd492\u003c/code\u003e\u003c/a\u003e Fix slicing with nonstrict optional (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21282\"\u003e#21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/908d3441eecbaa2a6193165317177db834d7ca1a\"\u003e\u003ccode\u003e908d344\u003c/code\u003e\u003c/a\u003e [mypyc] Set dunder attrs when adding module to sys.modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ba28610fac9d2b33be210ca8dcfe4bc47b7af424\"\u003e\u003ccode\u003eba28610\u003c/code\u003e\u003c/a\u003e Initial support for Python 3.15.0a8 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21255\"\u003e#21255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7b0e09f48dbd3717ed008a273cd17e8e960c2037\"\u003e\u003ccode\u003e7b0e09f\u003c/code\u003e\u003c/a\u003e Fix match statement semantics for \u0026quot;or\u0026quot; pattern (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21156\"\u003e#21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/92b74f226de62f7505f5ef5cb158e8ec9c58b8b7\"\u003e\u003ccode\u003e92b74f2\u003c/code\u003e\u003c/a\u003e Avoid widening types in conditional_types (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21242\"\u003e#21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/0dcbfaa40b0e360a16baea9cf851955375d91b54\"\u003e\u003ccode\u003e0dcbfaa\u003c/code\u003e\u003c/a\u003e Fix is_overlapping_types for generic callables (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21208\"\u003e#21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/210f518dede35292033ef0d387847406a0ccef8f\"\u003e\u003ccode\u003e210f518\u003c/code\u003e\u003c/a\u003e Correctly aggregate narrowing information on parent expressions (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21206\"\u003e#21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c34530e53a10e385d8b0f1af4baa88a596b5ceaa\"\u003e\u003ccode\u003ec34530e\u003c/code\u003e\u003c/a\u003e Only set journal mode in coordinator (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21217\"\u003e#21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/79a3ec6d01b56a27c00e9b3320c2b1d4d73a77f9\"\u003e\u003ccode\u003e79a3ec6\u003c/code\u003e\u003c/a\u003e Use WAL with SQLite cache, fix close (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21154\"\u003e#21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.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 `ruff` from 0.15.9 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.9...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `commitizen` from 4.13.9 to 4.13.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/b5d5040f7980a5d2bce320d2a1ea1e04ac54b00c\"\u003e\u003ccode\u003eb5d5040\u003c/code\u003e\u003c/a\u003e bump: version 4.13.9 → 4.13.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/4879df32b6aa7dc09dd19dffc3f2a68d7ea7666e\"\u003e\u003ccode\u003e4879df3\u003c/code\u003e\u003c/a\u003e ci(bump): fix email generation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/70c0c1f4cf055eb0a28637cc6a260353c531e496\"\u003e\u003ccode\u003e70c0c1f\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/8eff9819bdb74b429cac7d70d44726bef6077600\"\u003e\u003ccode\u003e8eff981\u003c/code\u003e\u003c/a\u003e ci: fix email for commitizenbot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/61926a771ba9d560a8d3a9e994a355b53b544dee\"\u003e\u003ccode\u003e61926a7\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/042a089ab11db863d06021548909d1eb8c845250\"\u003e\u003ccode\u003e042a089\u003c/code\u003e\u003c/a\u003e fix(ci): use commitizen bot to push tags and commits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/a06ce0cb656f5b053fb1bc3bcafcde85ee4241e1\"\u003e\u003ccode\u003ea06ce0c\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/97fb356d59a31a55b31eefb5d92cc1028bee25b8\"\u003e\u003ccode\u003e97fb356\u003c/code\u003e\u003c/a\u003e ci: use setup-cz\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/9abbdbda0c3edb42062e9f66467e1c4b85ab5591\"\u003e\u003ccode\u003e9abbdbd\u003c/code\u003e\u003c/a\u003e fix(init): set semver2 as default if not python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/33b69c33e44ed52eb55f1e5fd488ec375052d733\"\u003e\u003ccode\u003e33b69c3\u003c/code\u003e\u003c/a\u003e docs: improve readability\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commitizen-tools/commitizen/compare/v4.13.9...v4.13.10\"\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.2 to 8.3.3\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.3.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.3 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.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\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\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\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/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.3.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/76552ff1e8c85837f911fc34037e702ae4327eda\"\u003e\u003ccode\u003e76552ff\u003c/code\u003e\u003c/a\u003e Show default string in prompt (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ac5cec5fe54e5a691e7bac17f441ce9498e0744c\"\u003e\u003ccode\u003eac5cec5\u003c/code\u003e\u003c/a\u003e Reorder ParameterSource from most to least explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c452e00e6772931b7071d9316b82b77e5b8f280\"\u003e\u003ccode\u003e8c452e0\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into show-default-string-in-prompt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c95c73bd5ef89eac638f85f1904a104ba4b1a32\"\u003e\u003ccode\u003e8c95c73\u003c/code\u003e\u003c/a\u003e Reconcile default value passing and default activation (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.2...8.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.9.0 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gitpython` from 3.1.46 to 3.1.47\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gitpython-developers/GitPython/releases\"\u003egitpython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.47 - with security fixes\u003c/h2\u003e\n\u003ch2\u003eAdvisories\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4\"\u003ehttps://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-x2qx-6953-8485\"\u003ehttps://github.com/gitpython-developers/GitPython/security/advisories/GHSA-x2qx-6953-8485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare next release by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2095\"\u003egitpython-developers/GitPython#2095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e335c0f6\u003c/code\u003e to \u003ccode\u003e4c63ee6\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2096\"\u003egitpython-developers/GitPython#2096\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: README Add urls and updated a relative url by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2098\"\u003egitpython-developers/GitPython#2098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GitConfigParser ignoring multiple [include] path entries by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2100\"\u003egitpython-developers/GitPython#2100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch back from Alpine to Debian for WSL by \u003ca href=\"https://github.com/EliahKagan\"\u003e\u003ccode\u003e@​EliahKagan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2108\"\u003egitpython-developers/GitPython#2108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e4c63ee6\u003c/code\u003e to \u003ccode\u003e5c1b303\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2106\"\u003egitpython-developers/GitPython#2106\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRun \u003ccode\u003egc.collect()\u003c/code\u003e twice in \u003ccode\u003etest_rename\u003c/code\u003e on Python 3.12 by \u003ca href=\"https://github.com/EliahKagan\"\u003e\u003ccode\u003e@​EliahKagan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2109\"\u003egitpython-developers/GitPython#2109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: guard AutoInterrupt terminate during interpreter shutdown by \u003ca href=\"https://github.com/lweyrich1\"\u003e\u003ccode\u003e@​lweyrich1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2105\"\u003egitpython-developers/GitPython#2105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CI infrastructure for pre-commit by \u003ca href=\"https://github.com/EliahKagan\"\u003e\u003ccode\u003e@​EliahKagan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2110\"\u003egitpython-developers/GitPython#2110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the pre-commit group with 5 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/gitpython-developers/GitPython/pull/2111\"\u003egitpython-developers/GitPython#2111\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade Sphinx for 3.14 support; drop doc build support on 3.8; test 3.14 by \u003ca href=\"https://github.com/EliahKagan\"\u003e\u003ccode\u003e@​EliahKagan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2112\"\u003egitpython-developers/GitPython#2112\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eRepo.active_branch\u003c/code\u003e resolution for reftable-backed repositories by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2114\"\u003egitpython-developers/GitPython#2114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: warn about GitDB performance with large commits by \u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2115\"\u003egitpython-developers/GitPython#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecmd: fix kwarg formatting in docstring example by \u003ca href=\"https://github.com/UweSchwaeke\"\u003e\u003ccode\u003e@​UweSchwaeke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2117\"\u003egitpython-developers/GitPython#2117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ca href=\"https://github.com/astral-sh/ruff-pre-commit\"\u003ehttps://github.com/astral-sh/ruff-pre-commit\u003c/a\u003e from v0.15.5 to 0.15.8 in the pre-commit 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/gitpython-developers/GitPython/pull/2122\"\u003egitpython-developers/GitPython#2122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd trailer support for commit creation by \u003ca href=\"https://github.com/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2116\"\u003egitpython-developers/GitPython#2116\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHarden commit trailer subprocess handling and align trailer I/O paths by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2125\"\u003egitpython-developers/GitPython#2125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003egit.cmd.Git.execute(..): fix \u003ccode\u003ewith_stdout=False\u003c/code\u003e by \u003ca href=\"https://github.com/ngie-eign\"\u003e\u003ccode\u003e@​ngie-eign\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2126\"\u003egitpython-developers/GitPython#2126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure that multi-options are checked after splitting them with \u003ccode\u003eshlex\u003c/code\u003e by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2130\"\u003egitpython-developers/GitPython#2130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBlock unsafe underscored git kwargs / Fix for GHSA-rpm5-65cw-6hj4 by \u003ca href=\"https://github.com/WesR\"\u003e\u003ccode\u003e@​WesR\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2131\"\u003egitpython-developers/GitPython#2131\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/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2098\"\u003egitpython-developers/GitPython#2098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2100\"\u003egitpython-developers/GitPython#2100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lweyrich1\"\u003e\u003ccode\u003e@​lweyrich1\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2105\"\u003egitpython-developers/GitPython#2105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2114\"\u003egitpython-developers/GitPython#2114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2115\"\u003egitpython-developers/GitPython#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/UweSchwaeke\"\u003e\u003ccode\u003e@​UweSchwaeke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2117\"\u003egitpython-developers/GitPython#2117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2116\"\u003egitpython-developers/GitPython#2116\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ngie-eign\"\u003e\u003ccode\u003e@​ngie-eign\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2126\"\u003egitpython-developers/GitPython#2126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/WesR\"\u003e\u003ccode\u003e@​WesR\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2131\"\u003egitpython-developers/GitPython#2131\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.46...3.1.47\"\u003ehttps://github.com/gitpython-developers/GitPython/compare/3.1.46...3.1.47\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/gitpython-developers/GitPython/commit/4199cb89755f705801a4cb241723325b46201f51\"\u003e\u003ccode\u003e4199cb8\u003c/code\u003e\u003c/a\u003e bump version to 3.1.47\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/0f68db0710f9125762fca5dbc2328593537ae923\"\u003e\u003ccode\u003e0f68db0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2131\"\u003e#2131\u003c/a\u003e from WesR/main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/43d92dec4683568d11495956dd556161f17c3ea8\"\u003e\u003ccode\u003e43d92de\u003c/code\u003e\u003c/a\u003e git.cmd: harden unsafe option canonicalization and isolate push test cases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/9aed7cf8c20f69effcfcf7ebef09f312f73ab826\"\u003e\u003ccode\u003e9aed7cf\u003c/code\u003e\u003c/a\u003e linter fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/142195888e713542189533a52cdfc333f05c3af6\"\u003e\u003ccode\u003e1421958\u003c/code\u003e\u003c/a\u003e Block unsafe underscored git kwargs / Fix for GHSA-rpm5-65cw-6hj4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/da545232d0401fb9fb7660f9ff67991996674dda\"\u003e\u003ccode\u003eda54523\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2130\"\u003e#2130\u003c/a\u003e from gitpython-developers/fix-multi-options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/c9a26789d88b18f8b4620f37307df2976292d2a0\"\u003e\u003ccode\u003ec9a2678\u003c/code\u003e\u003c/a\u003e Make sure that multi-options are checked after splitting them with \u003ccode\u003eshlex\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/75e6c6bab4b3afab0bcb6bd6d2447b3e7eb6645c\"\u003e\u003ccode\u003e75e6c6b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2126\"\u003e#2126\u003c/a\u003e from ngie-eign/fix-execute-with_stdout-no-issues\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/6fc474265d863cbb9fbabdbfcc957f27cea2b5c4\"\u003e\u003ccode\u003e6fc4742\u003c/code\u003e\u003c/a\u003e test_avoids_changing...: don't leave test artifacts behind\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/d966a0deabe3c8cf09ba3d1b0f54a29bdbdb4f1d\"\u003e\u003ccode\u003ed966a0d\u003c/code\u003e\u003c/a\u003e git.cmd.Git.execute(..): fix \u003ccode\u003ewith_stdout=False\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.46...3.1.47\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastmcp` from 3.2.0 to 3.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\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\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\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/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.0...v3.2.4\"\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/elementsinteractive/lgtm-ai/pull/209","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/elementsinteractive%2Flgtm-ai/issues/209","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/209/packages"},{"uuid":"4333527603","node_id":"PR_kwDOGsCFt87V2Hur","number":10746,"state":"closed","title":"build(python): bump pygithub from 2.9.0 to 2.9.1 in the dev-dependencies group","user":"dependabot[bot]","labels":["maintenance","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-27T06:35:06.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-27T06:24:16.000Z","updated_at":"2026-04-27T06:35:08.000Z","time_to_close":650,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(python)","packages":[{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":"the dev-dependencies group","ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 1 update: [pygithub](https://github.com/pygithub/pygithub).\n\nUpdates `pygithub` from 2.9.0 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\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=pygithub\u0026package-manager=uv\u0026previous-version=2.9.0\u0026new-version=2.9.1)](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 \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/ansys/ansys-tools-repo-sync/pull/10746","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansys%2Fansys-tools-repo-sync/issues/10746","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10746/packages"},{"uuid":"4332356720","node_id":"PR_kwDOFvSVkM7VyZan","number":332,"state":"open","title":"Bump the python group across 1 directory with 26 updates","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-04-27T00:10:45.000Z","updated_at":"2026-04-27T00:14:23.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":26,"packages":[{"name":"pillow","old_version":"12.1.1","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"redis","old_version":"7.3.0","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"django","old_version":"5.2.12","new_version":"5.2.13","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.15.0","new_version":"65.16.1","repository_url":"https://github.com/sponsors/pennersr"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-django","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"django-anymail","old_version":"14.0","new_version":"15.0","repository_url":"https://github.com/anymail/django-anymail"},{"name":"werkzeug","old_version":"3.1.6","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"django-stubs","old_version":"5.2.9","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.15.6","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-debug-toolbar","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-coverage-plugin","old_version":"3.2.0","new_version":"3.2.2","repository_url":"https://github.com/coveragepy/django_coverage_plugin"},{"name":"rust-just","old_version":"1.47.0","new_version":"1.50.0","repository_url":"https://github.com/gnpaone/rust-just"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 26 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.1` | `12.2.0` |\n| [redis](https://github.com/redis/redis-py) | `7.3.0` | `7.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.3.1` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.8.1` | `2.9.1` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260408` |\n| [django](https://github.com/django/django) | `5.2.12` | `5.2.13` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.15.0` | `65.16.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-instrumentation-django](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `14.0` | `15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.6` | `3.1.8` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `5.2.9` | `6.0.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.6` | `0.15.12` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `6.2.0` | `6.3.0` |\n| [django-coverage-plugin](https://github.com/coveragepy/django_coverage_plugin) | `3.2.0` | `3.2.2` |\n| [rust-just](https://github.com/gnpaone/rust-just) | `1.47.0` | `1.50.0` |\n\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 `redis` from 7.3.0 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/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\u003eSee full diff in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.3.0...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release fixes a compatibility issue with Python 3.15:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/pull/218\"\u003eredis/hiredis-py#218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/3cb8f069006f7138620b065fba973ccc490bde3d\"\u003e\u003ccode\u003e3cb8f06\u003c/code\u003e\u003c/a\u003e Version 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/2836c965d28606fecfc8989059edb36a0c4fb320\"\u003e\u003ccode\u003e2836c96\u003c/code\u003e\u003c/a\u003e MNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10151\"\u003ecelery/celery#10151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove on_after_finalize signal documentation by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10155\"\u003ecelery/celery#10155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-commutative example to clarify partial arg ordering in canvas docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10157\"\u003ecelery/celery#10157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant test_isa_mapping test (fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10077\"\u003e#10077\u003c/a\u003e) by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10103\"\u003ecelery/celery#10103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10162\"\u003ecelery/celery#10162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated args from redis get_connection call by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10036\"\u003ecelery/celery#10036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/celery/celery/issues/6912\"\u003e#6912\u003c/a\u003e rpc backend reconnection error by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10179\"\u003ecelery/celery#10179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) by \u003ca href=\"https://github.com/drichardson\"\u003e\u003ccode\u003e@​drichardson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10165\"\u003ecelery/celery#10165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit by \u003ca href=\"https://github.com/tsangwailam\"\u003e\u003ccode\u003e@​tsangwailam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10181\"\u003ecelery/celery#10181\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix O(K²) message bloat in a chain of chords by \u003ca href=\"https://github.com/Borzik\"\u003e\u003ccode\u003e@​Borzik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10171\"\u003ecelery/celery#10171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mock connection interfaces to prevent \u003ccode\u003eTypeError\u003c/code\u003e during exception handling by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10178\"\u003ecelery/celery#10178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks by \u003ca href=\"https://github.com/aurangzaib048\"\u003e\u003ccode\u003e@​aurangzaib048\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10159\"\u003ecelery/celery#10159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003ereconnect_on_error\u003c/code\u003e to \u003ccode\u003eBaseResultConsumer\u003c/code\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10189\"\u003ecelery/celery#10189\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epep 649 by \u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10187\"\u003ecelery/celery#10187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix#9722 friendly status errors for CLI by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10190\"\u003ecelery/celery#10190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify after_return behavior for retried tasks by \u003ca href=\"https://github.com/KianAnbarestani\"\u003e\u003ccode\u003e@​KianAnbarestani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10192\"\u003ecelery/celery#10192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd compression header to message protocol docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10156\"\u003ecelery/celery#10156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated word in bootsteps comment by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10153\"\u003ecelery/celery#10153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove outdated autoreloader section from extending docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10154\"\u003ecelery/celery#10154\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/celery/celery/blob/v5.6.3/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.3\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-03-26\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix Django worker recursion bug + defensive checks for pool_cls.__module__ ([#10048](https://github.com/celery/celery/issues/10048))\n- Docs: Update user_preload_options example to use click. ([#10056](https://github.com/celery/celery/issues/10056))\n- Fix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo ([#10060](https://github.com/celery/celery/issues/10060))\n- Fix broken images on PyPI page ([#10066](https://github.com/celery/celery/issues/10066))\n- Remove broken reference. ([#10071](https://github.com/celery/celery/issues/10071))\n- Removed --dist=loadscope from smoke tests ([#10073](https://github.com/celery/celery/issues/10073))\n- Docs: Clarify task_retry signal args may be None ([#10076](https://github.com/celery/celery/issues/10076))\n- Update example for Django ([#10081](https://github.com/celery/celery/issues/10081))\n- Make tests compatible with pymongo \u0026gt;= 4.16 ([#10074](https://github.com/celery/celery/issues/10074))\n- fix: source install of cassandra-driver ([#10105](https://github.com/celery/celery/issues/10105))\n- fix: register task cross-reference role in Sphinx extension ([#10100](https://github.com/celery/celery/issues/10100))\n- fix: avoid cycle detection in native delayed delivery ([#10095](https://github.com/celery/celery/issues/10095))\n- fix(asynpool): avoid AttributeError when proc lacks _sentinel_poll ([#10086](https://github.com/celery/celery/issues/10086))\n- fix dusk_astronomical horizon sign (+18 -\u0026gt; -18) ([#10121](https://github.com/celery/celery/issues/10121))\n- Fix/10106 onupdate col use lambda func ([#10108](https://github.com/celery/celery/issues/10108))\n- Fix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 ([#10083](https://github.com/celery/celery/issues/10083)) ([#10123](https://github.com/celery/celery/issues/10123))\n- Fix 10109 db backend connection health ([#10124](https://github.com/celery/celery/issues/10124))\n- Database Backend filter unsupport sql engine arguments with nullpool [#7355](https://github.com/celery/celery/issues/7355) ([#10134](https://github.com/celery/celery/issues/10134))\n- fix(beat): correct argument order in Service.__reduce__ ([#10137](https://github.com/celery/celery/issues/10137))\n- ci: declare explicit read-only token permissions in workflow jobs ([#10139](https://github.com/celery/celery/issues/10139))\n- chore: 'boto3to' to 'boto3 to' ([#10133](https://github.com/celery/celery/issues/10133))\n- Database Backend: Add missing index on date_done (Fixes [#10097](https://github.com/celery/celery/issues/10097)) ([#10098](https://github.com/celery/celery/issues/10098))\n- docs: fix typo in CONTRIBUTING.rst ([#10141](https://github.com/celery/celery/issues/10141))\n- Refer to Flower / Prometheus for monitoring ([#10140](https://github.com/celery/celery/issues/10140))\n- docs: remove duplicated words in broker and routing docs ([#10146](https://github.com/celery/celery/issues/10146))\n- docs: fix stale version reference and grammar in README ([#10145](https://github.com/celery/celery/issues/10145))\n- docs: fix wording in Celery 5.3 worker pool notes ([#10149](https://github.com/celery/celery/issues/10149))\n- docs: fix duplicated wording in 3.1 changelog entry ([#10152](https://github.com/celery/celery/issues/10152))\n- docs: fix changelog typo in context manager wording ([#10144](https://github.com/celery/celery/issues/10144))\n- Fix/10096 worker fails to reconnect after redis failover ([#10151](https://github.com/celery/celery/issues/10151))\n- Improve on_after_finalize signal documentation ([#10155](https://github.com/celery/celery/issues/10155))\n- Add non-commutative example to clarify partial arg ordering in canvas docs ([#10157](https://github.com/celery/celery/issues/10157))\n- Remove redundant test_isa_mapping test (fixes [#10077](https://github.com/celery/celery/issues/10077)) ([#10103](https://github.com/celery/celery/issues/10103))\n- Upgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg ([#10162](https://github.com/celery/celery/issues/10162))\n- Remove deprecated args from redis get_connection call ([#10036](https://github.com/celery/celery/issues/10036))\n- Fix [#6912](https://github.com/celery/celery/issues/6912) rpc backend reconnection error ([#10179](https://github.com/celery/celery/issues/10179))\n- Fix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) ([#10165](https://github.com/celery/celery/issues/10165))\n- docs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit ([#10181](https://github.com/celery/celery/issues/10181))\n- Fix O(K²) message bloat in a chain of chords ([#10171](https://github.com/celery/celery/issues/10171))\n- Fix mock connection interfaces to prevent `TypeError` during exception handling ([#10178](https://github.com/celery/celery/issues/10178))\n- fix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks ([#10159](https://github.com/celery/celery/issues/10159))\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/3f4d8d795ad128bd7430cc5dc174a802cded425c\"\u003e\u003ccode\u003e3f4d8d7\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.3 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10221\"\u003e#10221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a989e8cf8876274b1f0612abffeeb2e9995ed321\"\u003e\u003ccode\u003ea989e8c\u003c/code\u003e\u003c/a\u003e fix: clear the timer while catch the exception (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10218\"\u003e#10218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d06de5f047620b0ea2bdbdb3c0c56137b79ae9a1\"\u003e\u003ccode\u003ed06de5f\u003c/code\u003e\u003c/a\u003e Chore(deps): Bump nick-fields/retry from 3 to 4 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10213\"\u003e#10213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/c3c19c31dc3e21f16d4d85a8ba8401a9223ace09\"\u003e\u003ccode\u003ec3c19c3\u003c/code\u003e\u003c/a\u003e Fix: prioritize request ignore_result over task definition (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10184\"\u003e#10184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d23be53f6f3600d48df35a797c63eb1c7d4d4b97\"\u003e\u003ccode\u003ed23be53\u003c/code\u003e\u003c/a\u003e Remove outdated autoreloader section from extending docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10154\"\u003e#10154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ada2da7475a5fa9f9ad079149a5d6864634abc28\"\u003e\u003ccode\u003eada2da7\u003c/code\u003e\u003c/a\u003e docs: fix duplicated word in bootsteps comment\\n\\nSigned-off-by: Rohan Santho...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f45f62beb3b16ae960944f8c97de13ccf15f2d0a\"\u003e\u003ccode\u003ef45f62b\u003c/code\u003e\u003c/a\u003e Add compression header to message protocol docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10156\"\u003e#10156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9a270925546ed9d0ca0303fb5006edc86b705fd9\"\u003e\u003ccode\u003e9a27092\u003c/code\u003e\u003c/a\u003e docs: clarify after_return behavior for retried tasks (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10192\"\u003e#10192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6ee6230cd80ef6c3e7482e1f4cd970fbb0629b23\"\u003e\u003ccode\u003e6ee6230\u003c/code\u003e\u003c/a\u003e Fix#9722 friendly status errors for CLI (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10190\"\u003e#10190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a9a2d4cecaf0e58c401ad6f68f022afa19770ac2\"\u003e\u003ccode\u003ea9a2d4c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10186\"\u003e#10186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.6.2...v5.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.8.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.8.1...v2.9.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 `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 `django-allauth` from 65.15.0 to 65.16.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\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 `opentelemetry-api` from 1.40.0 to 1.41.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/v1.41.1/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.41.1/0.62b1 (2026-04-24)\u003c/h2\u003e\n\u003ch2\u003eVersion 1.41.0/0.62b0 (2026-04-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ehost\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].host\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5002\"\u003e#5002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003econtainer\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].container\u003c/code\u003e, using entry point loading of the \u003ccode\u003eopentelemetry-resource-detector-containerid\u003c/code\u003e contrib package\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5004\"\u003e#5004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_tracer_provider\u003c/code\u003e/\u003ccode\u003econfigure_tracer_provider\u003c/code\u003e to declarative file configuration, enabling TracerProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4985\"\u003e#4985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnabled the flake8-tidy-import plugins rules for the ruff linter. These rules throw warnings for relative imports in the modules.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5019\"\u003e#5019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Fix \u003ccode\u003eAttributeError\u003c/code\u003e in \u003ccode\u003eExplicitBucketHistogramAggregation\u003c/code\u003e when applied to non-Histogram instruments without explicit boundaries\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5034\"\u003e#5034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eBatchLogRecordProcessor\u003c/code\u003e default \u003ccode\u003eschedule_delay_millis\u003c/code\u003e from 5000ms to 1000ms to comply with the OTel specification. Note: logs may be exported 5x more frequently by default (e.g. for users who don't explicitly set the \u003ccode\u003eOTEL_BLRP_SCHEDULE_DELAY\u003c/code\u003e env var).\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4998\"\u003e#4998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eprocess\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].process\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5001\"\u003e#5001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add shared \u003ccode\u003e_parse_headers\u003c/code\u003e helper for declarative config OTLP exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Replace a broad exception in attribute cleaning tests to satisfy pylint in the \u003ccode\u003elint-opentelemetry-api\u003c/code\u003e CI job\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_meter_provider\u003c/code\u003e/\u003ccode\u003econfigure_meter_provider\u003c/code\u003e to declarative file configuration, enabling MeterProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4987\"\u003e#4987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_resource\u003c/code\u003e and \u003ccode\u003ecreate_propagator\u003c/code\u003e/\u003ccode\u003econfigure_propagator\u003c/code\u003e to declarative file configuration, enabling Resource and propagator instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4979\"\u003e#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Map Python \u003ccode\u003eCRITICAL\u003c/code\u003e log level to OTel \u003ccode\u003eFATAL\u003c/code\u003e severity text per the specification\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4984\"\u003e#4984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add file configuration support with YAML/JSON loading, environment variable substitution, and schema validation against the vendored OTel config JSON schema\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4898\"\u003e#4898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix intermittent CI failures in \u003ccode\u003egetting-started\u003c/code\u003e and \u003ccode\u003etracecontext\u003c/code\u003e jobs caused by GitHub git CDN SHA propagation lag by installing contrib packages from the already-checked-out local copy instead of a second git clone\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4958\"\u003e#4958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: fix type annotations on \u003ccode\u003eMetricReader\u003c/code\u003e and related types\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4938/\"\u003e#4938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement log creation metric\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4935\"\u003e#4935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement metric reader metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4970\"\u003e#4970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement processor metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5012\"\u003e#5012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: upgrade vendored OTel configuration schema from v1.0.0-rc.3 to v1.0.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4965\"\u003e#4965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimprove check-links ci job\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4978\"\u003e#4978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve some Pyright type errors in Span/ReadableSpan and utility stubs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4973\"\u003e#4973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-prometheus\u003c/code\u003e: Fix metric name prefix\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4895\"\u003e#4895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add deepcopy support for \u003ccode\u003eBoundedAttributes\u003c/code\u003e and \u003ccode\u003eBoundedList\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4934\"\u003e#4934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-proto-json\u003c/code\u003e, \u003ccode\u003eopentelemetry-codegen-json\u003c/code\u003e: Implement custom protoc plugin to generate OTLP JSON class definitions\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/760e0248edbd01ae817941c1dfa61c07241b0727\"\u003e\u003ccode\u003e760e024\u003c/code\u003e\u003c/a\u003e Prepare release 1.41.1/0.62b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5138\"\u003e#5138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/90e06bcd8c024a38ecf388c19c5a15fc094ea0ed\"\u003e\u003ccode\u003e90e0...\n\n_Description has been truncated_","html_url":"https://github.com/mfosterw/cookiestocracy/pull/332","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfosterw%2Fcookiestocracy/issues/332","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/332/packages"},{"uuid":"4330040168","node_id":"PR_kwDOGvy9Ws7VrrCP","number":49,"state":"open","title":"Bump the dev group across 1 directory with 6 updates","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-04-26T04:43:10.000Z","updated_at":"2026-05-05T00:20:34.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dev","update_count":6,"packages":[{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"tox","old_version":"4.34.1","new_version":"4.53.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"pyright","old_version":"1.1.408","new_version":"1.1.409","repository_url":"https://github.com/RobertCraigie/pyright-python"},{"name":"pytest-regressions","old_version":"2.9.1","new_version":"2.10.0","repository_url":"https://github.com/ESSS/pytest-regressions"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.8.1` | `2.9.1` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.34.1` | `4.53.1` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.408` | `1.1.409` |\n| [pytest-regressions](https://github.com/ESSS/pytest-regressions) | `2.9.1` | `2.10.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n\n\nUpdates `pygithub` from 2.8.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.8.1...v2.9.1\"\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 `tox` from 4.34.1 to 4.53.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.53.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(security): harden user-facing logs and untrusted inputs 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/3924\"\u003etox-dev/tox#3924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(type): correct argparse override signatures for ty 0.0.33 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/3932\"\u003etox-dev/tox#3932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: allow deps arrays in TOML schema by \u003ca href=\"https://github.com/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\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/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\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.53.0...4.53.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.53.0...4.53.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.53.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(toml): allow bare range/labeled dicts in env_list 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/3923\"\u003etox-dev/tox#3923\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.52.1...4.53.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.52.1...4.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.52.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003euse normalize_isa for architecture factor matching by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3919\"\u003etox-dev/tox#3919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(pip): invalidate install cache on resolution env var changes 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/3921\"\u003etox-dev/tox#3921\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.52.0...4.52.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.52.0...4.52.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.52.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eremove unsupported --remote flag from gh repo fork by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3908\"\u003etox-dev/tox#3908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(config): support escaped dots in -x override keys 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/3910\"\u003etox-dev/tox#3910\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(docs): auto-generate manpage from CLI parser 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/3911\"\u003etox-dev/tox#3911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(runner): add PEP 723 inline script metadata support 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/3912\"\u003etox-dev/tox#3912\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.51.0...4.52.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.51.0...4.52.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.51.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(workflows): add zizmor security auditing 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/3896\"\u003etox-dev/tox#3896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ebase_python_file\u003c/code\u003e config option by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3899\"\u003etox-dev/tox#3899\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/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.53.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHardening pass on user-facing logging and config parsing:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMask secret-looking \u003ccode\u003e--key=value\u003c/code\u003e flag values in command logs (terminal warnings, \u003ccode\u003e.tox/\u0026lt;env\u0026gt;/log/*.log\u003c/code\u003e, and\n\u003ccode\u003eOutcome\u003c/code\u003e \u003ccode\u003e__repr__\u003c/code\u003e) using the same keyword regex previously applied to environment variable values.\u003c/li\u003e\n\u003cli\u003eResolve PEP 723 \u003ccode\u003escript\u003c/code\u003e paths and reject any that escape \u003ccode\u003etox_root\u003c/code\u003e; cap the script read at 5 MiB so a symlink\nto \u003ccode\u003e/dev/zero\u003c/code\u003e cannot exhaust memory.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e of a constructed \u003ccode\u003eLiteral[...]\u003c/code\u003e string in the CLI parser with a direct\n\u003ccode\u003eLiteral[tuple(action.choices)]\u003c/code\u003e subscript.\u003c/li\u003e\n\u003cli\u003ePass \u003ccode\u003etimeout=30\u003c/code\u003e to \u003ccode\u003eurlopen\u003c/code\u003e when fetching a remote requirements file so a slow or unresponsive mirror cannot\nhang \u003ccode\u003etox\u003c/code\u003e indefinitely. (:issue:\u003ccode\u003e3924\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow the generated TOML schema to validate array values for \u003ccode\u003edeps\u003c/code\u003e. (:issue:\u003ccode\u003e3929\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCorrect type annotations for \u003ccode\u003eArgumentParser.parse_args\u003c/code\u003e and \u003ccode\u003eparse_known_args\u003c/code\u003e overrides following \u003ccode\u003etypeshed PR [#15613](https://github.com/tox-dev/tox/issues/15613) \u0026lt;https://github.com/python/typeshed/pull/15613\u0026gt;\u003c/code\u003e_, which widened the \u003ccode\u003eargs\u003c/code\u003e parameter from \u003ccode\u003eSequence[str]\u003c/code\u003e\nto \u003ccode\u003eIterable[str]\u003c/code\u003e. The narrower type in tox's overrides violated the Liskov substitution principle and caused\n\u003ccode\u003einvalid-method-override\u003c/code\u003e errors with \u003ccode\u003ety\u003c/code\u003e 0.0.33. Also correct the \u003ccode\u003eoption_spec\u003c/code\u003e annotation in\n\u003ccode\u003edocs/tox_conf.py\u003c/code\u003e to \u003ccode\u003eClassVar[dict[str, Callable[[str], Any]]]\u003c/code\u003e matching the docutils stubs type.\n(:issue:\u003ccode\u003e3932\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.53.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eFeatures - 4.53.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eTOML \u003ccode\u003eenv_list\u003c/code\u003e now accepts bare range dicts (\u003ccode\u003e{ prefix = \u0026quot;3.\u0026quot;, start = 12, stop = 14 }\u003c/code\u003e) and bare labeled dicts\n(\u003ccode\u003e{ ecosystem = [\u0026quot;oci\u0026quot;, \u0026quot;python\u0026quot;] }\u003c/code\u003e) as top-level items, removing the \u003ccode\u003e{ product = [...] }\u003c/code\u003e wrapper when there is\nonly a single factor group - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e3923\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.53.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eNesting a range or labeled dict inside a \u003ccode\u003eproduct\u003c/code\u003e factor-group list now raises a clear error pointing at the\nun-nesting fix, instead of silently producing a malformed environment name - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e3923\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.52.1 (2026-04-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eBug fixes - 4.52.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eChanging a resolution-affecting environment variable via \u003ccode\u003eset_env\u003c/code\u003e (e.g. \u003ccode\u003ePIP_INDEX_URL\u003c/code\u003e) now invalidates the\ninstall cache and triggers a reinstall, rather than incorrectly reusing the cached environment - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e3917\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003enormalize_isa\u003c/code\u003e from \u003ccode\u003epython-discovery\u003c/code\u003e for architecture factor matching, supporting aliases like \u003ccode\u003ei686\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/2b177917e4c0208c3e380e43f8d32d507180d82e\"\u003e\u003ccode\u003e2b17791\u003c/code\u003e\u003c/a\u003e release 4.53.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/86234dd57fc6a6dbf801aa98a91642cb9daf1dc8\"\u003e\u003ccode\u003e86234dd\u003c/code\u003e\u003c/a\u003e fix: allow deps arrays in TOML schema (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3931\"\u003e#3931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/dd305fe8f347c49fcd3bd63d5e56c912e4c428f2\"\u003e\u003ccode\u003edd305fe\u003c/code\u003e\u003c/a\u003e 🐛 fix(type): correct argparse override signatures for ty 0.0.33 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3932\"\u003e#3932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/3aa3cd5d4226dfdb54de3de810cd9367390c6424\"\u003e\u003ccode\u003e3aa3cd5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/59b6cd2c5cd7b7ebc44f65646f239ec6f2382f6e\"\u003e\u003ccode\u003e59b6cd2\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3928\"\u003e#3928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/3765fcd51f62efeac5b948fcf492dcd1d18398ce\"\u003e\u003ccode\u003e3765fcd\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3927\"\u003e#3927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/b76c383d55551c691ca3edda91838ce79b5de82a\"\u003e\u003ccode\u003eb76c383\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/cache from 5.0.4 to 5.0.5 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3926\"\u003e#3926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/7b0ad944ba8ebe4644289333660280fcccf8ab8a\"\u003e\u003ccode\u003e7b0ad94\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3925\"\u003e#3925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/4dcde44c0746138421bef38f1c0dac42ee505223\"\u003e\u003ccode\u003e4dcde44\u003c/code\u003e\u003c/a\u003e 🐛 fix(security): harden user-facing logs and untrusted inputs (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3924\"\u003e#3924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/4c584f24ab0331d26468216116a8c1382b75c21f\"\u003e\u003ccode\u003e4c584f2\u003c/code\u003e\u003c/a\u003e release 4.53.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox/compare/4.34.1...4.53.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyright` from 1.1.408 to 1.1.409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RobertCraigie/pyright-python/commit/d7508e5425d3d02761d70dab1f9a2086573af429\"\u003e\u003ccode\u003ed7508e5\u003c/code\u003e\u003c/a\u003e [pyright updated to 1.1.409] Update Version (\u003ca href=\"https://redirect.github.com/RobertCraigie/pyright-python/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/RobertCraigie/pyright-python/compare/v1.1.408...v1.1.409\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-regressions` from 2.9.1 to 2.10.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ESSS/pytest-regressions/blob/master/CHANGELOG.rst\"\u003epytest-regressions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.10.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-02-10\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#225](https://github.com/ESSS/pytest-regressions/issues/225) \u0026lt;https://github.com/ESSS/pytest-regressions/issues/225\u0026gt;\u003c/code\u003e__: Add support for Pandas 3.0 to \u003ccode\u003edataframe_regression\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ESSS/pytest-regressions/commit/6500a86bf6cbc4baa0eaf5e04128886038a75404\"\u003e\u003ccode\u003e6500a86\u003c/code\u003e\u003c/a\u003e Release 2.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ESSS/pytest-regressions/commit/0f4eb118e53e010bf223a7d9bcb8d723d42f4788\"\u003e\u003ccode\u003e0f4eb11\u003c/code\u003e\u003c/a\u003e Add support for pandas 3 (\u003ca href=\"https://redirect.github.com/ESSS/pytest-regressions/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ESSS/pytest-regressions/commit/f040b7c0088d02f4abec4281e6d59748963ac7e0\"\u003e\u003ccode\u003ef040b7c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ESSS/pytest-regressions/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ESSS/pytest-regressions/commit/3a793beabae766116cf2a3ccdc40896514c95720\"\u003e\u003ccode\u003e3a793be\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ESSS/pytest-regressions/issues/223\"\u003e#223\u003c/a\u003e from ESSS/release-2.9.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ESSS/pytest-regressions/compare/v2.9.1...v2.10.0\"\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","html_url":"https://github.com/taminomara/yuio/pull/49","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/taminomara%2Fyuio/issues/49","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/49/packages"},{"uuid":"4325150491","node_id":"PR_kwDONvGycc7VcjEh","number":368,"state":"open","title":"Bump pygithub from 2.8.1 to 2.9.1","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-04-24T19:36:26.000Z","updated_at":"2026-05-02T15:24:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.8.1 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.8.1...v2.9.1\"\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/clokep/relapse/pull/368","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/clokep%2Frelapse/issues/368","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/368/packages"},{"uuid":"4322786492","node_id":"PR_kwDONbH5oc7VUya4","number":54,"state":"closed","title":"Bump pygithub from 2.5.0 to 2.9.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-24T12:11:42.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-24T12:08:48.000Z","updated_at":"2026-04-24T12:11:44.000Z","time_to_close":174,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pygithub","old_version":"2.5.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.5.0 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.5.0...v2.9.1\"\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=pygithub\u0026package-manager=pip\u0026previous-version=2.5.0\u0026new-version=2.9.1)](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/ossprey/gh-action/pull/54","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ossprey%2Fgh-action/issues/54","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/54/packages"},{"uuid":"4306428810","node_id":"PR_kwDORwUwGc7UfX_n","number":36,"state":"closed","title":"Bump the uv-dependency-updates group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-29T02:48:42.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-22T02:49:48.000Z","updated_at":"2026-04-29T02:48:44.000Z","time_to_close":604734,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"uv-dependency-updates","update_count":12,"packages":[{"name":"click","old_version":"8.3.1","new_version":"8.3.2","repository_url":"https://github.com/pallets/click"},{"name":"filelock","old_version":"3.25.2","new_version":"3.28.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-api-python-client","old_version":"2.193.0","new_version":"2.194.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-auth-httplib2","old_version":"0.3.0","new_version":"0.3.1","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth-oauthlib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"packaging","old_version":"26.0","new_version":"26.1","repository_url":"https://github.com/pypa/packaging"},{"name":"prek","old_version":"0.3.6","new_version":"0.3.9","repository_url":"https://github.com/j178/prek"},{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.3.3","new_version":"15.0.0","repository_url":"https://github.com/Textualize/rich"},{"name":"boto3","old_version":"1.42.72","new_version":"1.42.91","repository_url":"https://github.com/boto/boto3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-dependency-updates group with 12 updates in the /dev/breeze directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.2` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.25.2` | `3.28.0` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.193.0` | `2.194.0` |\n| [google-auth-httplib2](https://github.com/googleapis/google-cloud-python) | `0.3.0` | `0.3.1` |\n| [google-auth-oauthlib](https://github.com/googleapis/google-cloud-python) | `1.3.0` | `1.3.1` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.1` |\n| [prek](https://github.com/j178/prek) | `0.3.6` | `0.3.9` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.8.1` | `2.9.1` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [rich](https://github.com/Textualize/rich) | `14.3.3` | `15.0.0` |\n| [boto3](https://github.com/boto/boto3) | `1.42.72` | `1.42.91` |\n\n\nUpdates `click` from 8.3.1 to 8.3.2\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.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.2 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.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3084\"\u003e#3084\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3152\"\u003e#3152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3199\"\u003e#3199\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3202\"\u003e#3202\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3209\"\u003e#3209\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3212\"\u003e#3212\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2991\"\u003e#2991\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2993\"\u003e#2993\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3110\"\u003e#3110\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3140\"\u003e#3140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3121\"\u003e#3121\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3201\"\u003e#3201\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3213\"\u003e#3213\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3225\"\u003e#3225\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/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.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n:issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e2991\u003c/code\u003e :issue:\u003ccode\u003e2993\u003c/code\u003e :issue:\u003ccode\u003e3110\u003c/code\u003e :pr:\u003ccode\u003e3139\u003c/code\u003e :pr:\u003ccode\u003e3140\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. :pr:\u003ccode\u003e3139\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. :issue:\u003ccode\u003e3121\u003c/code\u003e :pr:\u003ccode\u003e3201\u003c/code\u003e :pr:\u003ccode\u003e3213\u003c/code\u003e :pr:\u003ccode\u003e3225\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/052c006033729bbb422cbdad0c4fee988ecb5aa5\"\u003e\u003ccode\u003e052c006\u003c/code\u003e\u003c/a\u003e Change update release date.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/502b7ce7b131473ef00a3586e60bb000f33b4c43\"\u003e\u003ccode\u003e502b7ce\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' of \u003ca href=\"https://github.com/pallets/click\"\u003ehttps://github.com/pallets/click\u003c/a\u003e into release-8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a0a37e411820861d48e21b131fdd840abaf746e0\"\u003e\u003ccode\u003ea0a37e4\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3301\"\u003e#3301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/57be6fc2b40eb40279d022e6aabc983ee0dfb7a9\"\u003e\u003ccode\u003e57be6fc\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/781d6a88bdd30229e72a84cd6753b0235f339679\"\u003e\u003ccode\u003e781d6a8\u003c/code\u003e\u003c/a\u003e Update publish workflows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3266\"\u003e#3266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ff795b66ba945239c779b528171f5fe4536cf844\"\u003e\u003ccode\u003eff795b6\u003c/code\u003e\u003c/a\u003e Update precommit pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/dd87ef4f9fa7d6f13e14885e9a6842a21ededebc\"\u003e\u003ccode\u003edd87ef4\u003c/code\u003e\u003c/a\u003e Update github action pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/93d3f9d22e90035bc2b51c2183c15bd4a021376f\"\u003e\u003ccode\u003e93d3f9d\u003c/code\u003e\u003c/a\u003e Release version 8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3299ba1a8a5de34b24a7226a683a837d8a0857e7\"\u003e\u003ccode\u003e3299ba1\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3264\"\u003e#3264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b7f62c4d002e5b5bca3ebef6b995b7338740fe6f\"\u003e\u003ccode\u003eb7f62c4\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.1...8.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.25.2 to 3.28.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.28.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again 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/filelock/pull/529\"\u003etox-dev/filelock#529\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/filelock/compare/3.27.0...3.28.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.27.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters 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/filelock/pull/528\"\u003etox-dev/filelock#528\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/filelock/compare/3.26.1...3.27.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.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(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling by \u003ca href=\"https://github.com/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\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/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\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/filelock/compare/3.26.0...3.26.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.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(workflows): add zizmor security auditing 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/filelock/pull/517\"\u003etox-dev/filelock#517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 fix(ci): restore git credentials for release job 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/filelock/pull/520\"\u003etox-dev/filelock#520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking 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/filelock/pull/524\"\u003etox-dev/filelock#524\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/filelock/compare/3.25.2...3.26.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.25.2...3.26.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e3.29.0 (2026-04-19)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): enable stale lock detection on Windows :pr:\u003ccode\u003e534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(async): use single-thread executor for lock consistency :pr:\u003ccode\u003e533\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 :pr:\u003ccode\u003e530\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.28.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again :pr:\u003ccode\u003e529\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.1 (2026-04-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling :pr:\u003ccode\u003e518\u003c/code\u003e - by :user:\u003ccode\u003enaarob\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 :pr:\u003ccode\u003e525\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.0 (2026-04-06)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking :pr:\u003ccode\u003e524\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e523\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 :pr:\u003ccode\u003e522\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove persist-credentials: false from release job :pr:\u003ccode\u003e520\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e519\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing :pr:\u003ccode\u003e517\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e516\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e514\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.2 (2026-03-11)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(unix): suppress EIO on close in Docker bind mounts :pr:\u003ccode\u003e513\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.1 (2026-03-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e510\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(win): restore best-effort lock file cleanup on release :pr:\u003ccode\u003e511\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/filelock/commit/55de20c0819652362881906fa289feff5a323c19\"\u003e\u003ccode\u003e55de20c\u003c/code\u003e\u003c/a\u003e Release 3.28.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/476b0e4a92776fe530b5d993247342f039004174\"\u003e\u003ccode\u003e476b0e4\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): unbreak release workflow, publish to PyPI again (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/824713edc32b54efd66566907f97c1238502810e\"\u003e\u003ccode\u003e824713e\u003c/code\u003e\u003c/a\u003e ✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/528\"\u003e#528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/9879de9298db93ffba0a9f58d9de75e9e2a00fc1\"\u003e\u003ccode\u003e9879de9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/527\"\u003e#527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4cfab498b6916f89be46152efa4a72e9731be98f\"\u003e\u003ccode\u003e4cfab49\u003c/code\u003e\u003c/a\u003e Release 3.26.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/734c9f26e8107ad24886129fc68865f0b46cf71f\"\u003e\u003ccode\u003e734c9f2\u003c/code\u003e\u003c/a\u003e 🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/c9f9cb4c63b69d1bcfbcf98fe7c8dc439f51d473\"\u003e\u003ccode\u003ec9f9cb4\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/525\"\u003e#525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/ad728d72a3e492297208c16b7c0787f4bfb6ccd0\"\u003e\u003ccode\u003ead728d7\u003c/code\u003e\u003c/a\u003e Release 3.26.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f8a9849d63f256229d7c6481081c5df58f63e2ba\"\u003e\u003ccode\u003ef8a9849\u003c/code\u003e\u003c/a\u003e ✨ feat(soft): add PID inspection and lock breaking (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/fc53a83fa16c748b687e598f12540b876c642fce\"\u003e\u003ccode\u003efc53a83\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.25.2...3.28.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-api-python-client` from 2.193.0 to 2.194.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-api-python-client/releases\"\u003egoogle-api-python-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.194.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.193.0...v2.194.0\"\u003e2.194.0\u003c/a\u003e (2026-04-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/91646aa8f11c3491c8ae96cb142098d23bd4d86a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/91646aa8f11c3491c8ae96cb142098d23bd4d86a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eagentregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/c63837ea9aeb0f90bc3d9bed82272538c65f711d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/c63837ea9aeb0f90bc3d9bed82272538c65f711d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eagentregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/dcb4b8996c6f66c6624b5d55762bd3b3b2657188\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/dcb4b8996c6f66c6624b5d55762bd3b3b2657188\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/03a174d2847d72f29e830b632dfd286bae061aef\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/03a174d2847d72f29e830b632dfd286bae061aef\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/6bcf698be695688ae2b8f495dd8b1facbea36652\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/6bcf698be695688ae2b8f495dd8b1facbea36652\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/ea9256491a9082b46c10d8d123ac8d6117b5242e\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/ea9256491a9082b46c10d8d123ac8d6117b5242e\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealertcenter:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5dff47cddcdd1ea2a01cb06f4fc51b4615412c1d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5dff47cddcdd1ea2a01cb06f4fc51b4615412c1d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealertcenter:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/70213df06da6dca4e0ca0773f65ecce0057ae588\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/70213df06da6dca4e0ca0773f65ecce0057ae588\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealloydb:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/e30b3b574430d6d5786133182a61fe309d5ff8ea\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/e30b3b574430d6d5786133182a61fe309d5ff8ea\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eanalyticsadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8c81a7c312e9eb83779d694d704d9a7ece84960b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8c81a7c312e9eb83779d694d704d9a7ece84960b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapigee:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8a3ff159fe52d11541cd3c7081f27d3a92ec157c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8a3ff159fe52d11541cd3c7081f27d3a92ec157c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapikeys:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/cec06010ccf58100aa875b5a82b5a4dc6119e3d3\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/cec06010ccf58100aa875b5a82b5a4dc6119e3d3\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eappengine:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/7935e3c7858b5273941d95507f1c5f395bb73dfd\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/7935e3c7858b5273941d95507f1c5f395bb73dfd\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eartifactregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/2904124c55cfbad06dd531294d19df9b03ffd08b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/2904124c55cfbad06dd531294d19df9b03ffd08b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3872d47f6e3077b77ca5e623d683aa4c9290826b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3872d47f6e3077b77ca5e623d683aa4c9290826b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/6e98d8bf562dcaf4628db21f8572b3fcd4333991\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/6e98d8bf562dcaf4628db21f8572b3fcd4333991\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquerydatatransfer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5feddee128ec217348d270c82dd2d8049f175f04\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5feddee128ec217348d270c82dd2d8049f175f04\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquery:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/9ff91f076330299320b29103467078bcaf5bbc4c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/9ff91f076330299320b29103467078bcaf5bbc4c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigtableadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/45c3a5686de4f12a2b9cbc73dca8be5a8837a4ac\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/45c3a5686de4f12a2b9cbc73dca8be5a8837a4ac\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigtableadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/84f19284846c9f3f230bac672bb2812ded4d891a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/84f19284846c9f3f230bac672bb2812ded4d891a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a1faed1dbb4c75c36f6f75209bc3d8e948030283\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a1faed1dbb4c75c36f6f75209bc3d8e948030283\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f3eca84fe126d4d004da30e84d2f854452c838e8\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f3eca84fe126d4d004da30e84d2f854452c838e8\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003echat:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f6cf5d2801b1bb0cffbd8d078d97287950bb9e88\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f6cf5d2801b1bb0cffbd8d078d97287950bb9e88\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudbilling:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/1dcb981e3521fd102a537203e557a46cb77b78db\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/1dcb981e3521fd102a537203e557a46cb77b78db\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudbuild:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/9a5a1cd8b87c0a8cee8e2fb07c9df4f4088e59cd\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/9a5a1cd8b87c0a8cee8e2fb07c9df4f4088e59cd\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclouddeploy:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/92270421dad5b1cdd1de7c9bed8a3570c396ca93\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/92270421dad5b1cdd1de7c9bed8a3570c396ca93\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudkms:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f3f0ad25b33f0811a524a414f93a80dc9b2f9a32\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f3f0ad25b33f0811a524a414f93a80dc9b2f9a32\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudsearch:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a26acd7ac001905649b2c913129fb3ed7a0ed567\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a26acd7ac001905649b2c913129fb3ed7a0ed567\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudtasks:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/2af118b3c0fa958e8954f7fced6e2218214a66c0\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/2af118b3c0fa958e8954f7fced6e2218214a66c0\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8e83dc996f64254ce826d59d32abba9ce22f7789\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8e83dc996f64254ce826d59d32abba9ce22f7789\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/da8c35f88c21181d8d46ed699e6166062b3250f4\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/da8c35f88c21181d8d46ed699e6166062b3250f4\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econfig:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b4fa3f2f6e1c1437270e2fd4cdb5d77be085606a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b4fa3f2f6e1c1437270e2fd4cdb5d77be085606a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econnectors:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/78dece310ddbc068cafb7877ea7b9c51ba00465d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/78dece310ddbc068cafb7877ea7b9c51ba00465d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtactcenterinsights:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/76bc2b43080e4eb98b149869c43c383e4133c884\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/76bc2b43080e4eb98b149869c43c383e4133c884\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtaineranalysis:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/03b49af4aa6dbd4b0b34c1aa3db5a607c660f37a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/03b49af4aa6dbd4b0b34c1aa3db5a607c660f37a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtaineranalysis:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b1c7a26316b7d00752c4012ede0d65632fd63faf\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b1c7a26316b7d00752c4012ede0d65632fd63faf\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/0b40ba83f99859afd3a58ebcc20bfda6bc484b7f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/0b40ba83f99859afd3a58ebcc20bfda6bc484b7f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/120be612dc45186c77091d671c167deb73c0740f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/120be612dc45186c77091d671c167deb73c0740f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d47e46693a4d760502e0f576884ef01c8836b45c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d47e46693a4d760502e0f576884ef01c8836b45c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/820112c5fdea8506ed88cc149e558e6a2a1a585d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/820112c5fdea8506ed88cc149e558e6a2a1a585d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8ccc149637c65d8e5ed1a89ee5ca43c029b02fc4\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8ccc149637c65d8e5ed1a89ee5ca43c029b02fc4\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b260d854ef3f5dd67d37b29c91df2bc3ffc35693\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b260d854ef3f5dd67d37b29c91df2bc3ffc35693\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatamigration:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/308cc75c64f69e5d361b2d518638588b35a95279\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/308cc75c64f69e5d361b2d518638588b35a95279\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataplex:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d4a71f77594865f4ca7d6793e4d886251b7ac943\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d4a71f77594865f4ca7d6793e4d886251b7ac943\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\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/googleapis/google-api-python-client/commit/10436ecbe9201c8af9ad235a05d77e5e05e6462e\"\u003e\u003ccode\u003e10436ec\u003c/code\u003e\u003c/a\u003e chore(main): release 2.194.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2733\"\u003e#2733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e\u003ccode\u003e2d0b3b1\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2737\"\u003e#2737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e\u003ccode\u003e4b1cfc7\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2735\"\u003e#2735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a82af07571da6c3c0ccfd2d9cf234785c3783e57\"\u003e\u003ccode\u003ea82af07\u003c/code\u003e\u003c/a\u003e chore: Migrate gsutil usage to gcloud storage (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2705\"\u003e#2705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003e\u003ccode\u003eb6b55b6\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2732\"\u003e#2732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.193.0...v2.194.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth-httplib2` from 0.3.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4e80530190d3e3d7d0dec26b8daf97c2db15c2df\"\u003e\u003ccode\u003e4e80530\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16193\"\u003e#16193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/0f8d933cfeca182e00eb589da2ab0df61579c6f1\"\u003e\u003ccode\u003e0f8d933\u003c/code\u003e\u003c/a\u003e chore: add gapic-generator integration test presubmit (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16465\"\u003e#16465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/ab44f7e4224b554e9365aafbd4ecb559ed975aa6\"\u003e\u003ccode\u003eab44f7e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency requests to v2.33.0 [security] (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16464\"\u003e#16464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/943a979f14b1f39608cdb2658823f087a599e418\"\u003e\u003ccode\u003e943a979\u003c/code\u003e\u003c/a\u003e chore(migration): Migrate code from googleapis/sphinx-docfx-yaml into package...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/8c6703da295ed30200bb38f637b745b64f34d690\"\u003e\u003ccode\u003e8c6703d\u003c/code\u003e\u003c/a\u003e chore(migration): Migrate code from googleapis/gapic-generator-python into pa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/e3731d58d5371f166e75742e257e2524d21e83cb\"\u003e\u003ccode\u003ee3731d5\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into migration.gapic-generator-python.migration.2026-03-2...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/20f57241d9f690abc31c1a19ee5a0d33c667f300\"\u003e\u003ccode\u003e20f5724\u003c/code\u003e\u003c/a\u003e Trigger CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/76a8b58e1f73328243ff838a4652bdcc4ead31b5\"\u003e\u003ccode\u003e76a8b58\u003c/code\u003e\u003c/a\u003e chore: skip spanner django presubmits using dorny filter (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16196\"\u003e#16196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/7a05a34dc0d4bd9ded9ab3ce97b5e61f2780e081\"\u003e\u003ccode\u003e7a05a34\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16191\"\u003e#16191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/46ee8a094fdb121f49fa600f91d1b8c0818a9253\"\u003e\u003ccode\u003e46ee8a0\u003c/code\u003e\u003c/a\u003e fix presubmit\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-httplib2-v0.3.0...google-auth-httplib2-v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth-oauthlib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/releases\"\u003egoogle-auth-oauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egrpc-google-iam-v1: v0.14.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/grpc-google-iam-v1-v0.14.3...grpc-google-iam-v1-v0.14.4\"\u003ev0.14.4\u003c/a\u003e (2026-03-31)\u003c/h2\u003e\n\u003ch2\u003egoogle-cloud-compute-v1beta: v0.10.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-compute-v1beta-v0.9.0...google-cloud-compute-v1beta-v0.10.0\"\u003ev0.10.0\u003c/a\u003e (2026-03-26)\u003c/h2\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/googleapis/google-cloud-python/blob/main/packages/gcp-sphinx-docfx-yaml/CHANGELOG.md\"\u003egoogle-auth-oauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://www.github.com/googleapis/sphinx-docfx-yaml/compare/v1.3.0...v1.3.1\"\u003e1.3.1\u003c/a\u003e (2021-11-15)\u003c/h3\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eresolve square bracketed references (\u003ca href=\"https://redirect.github.com/googleapis/sphinx-docfx-yaml/issues/146\"\u003e#146\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/sphinx-docfx-yaml/commit/fa049ace9d14e1f9993313983ad3426ff041672d\"\u003efa049ac\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/googleapis/google-cloud-python/commit/4e80530190d3e3d7d0dec26b8daf97c2db15c2df\"\u003e\u003ccode\u003e4e80530\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16193\"\u003e#16193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/ab44f7e4224b554e9365aafbd4ecb559ed975aa6\"\u003e\u003ccode\u003eab44f7e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency requests to v2.33.0 [security] (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16464\"\u003e#16464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/943a979f14b1f39608cdb2658823f087a599e418\"\u003e\u003ccode\u003e943a979\u003c/code\u003e\u003c/a\u003e chore(migration): Migrate code from googleapis/sphinx-docfx-yaml into package...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/e3731d58d5371f166e75742e257e2524d21e83cb\"\u003e\u003ccode\u003ee3731d5\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into migration.gapic-generator-python.migration.2026-03-2...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/7a05a34dc0d4bd9ded9ab3ce97b5e61f2780e081\"\u003e\u003ccode\u003e7a05a34\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16191\"\u003e#16191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/c23b0670def4d049a81e073260cdd664c909e358\"\u003e\u003ccode\u003ec23b067\u003c/code\u003e\u003c/a\u003e fix typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/c174901a7dfa72268191a0212e565c7baa5b3658\"\u003e\u003ccode\u003ec174901\u003c/code\u003e\u003c/a\u003e add placeholder for system test nox session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/0f19d85b8083b57c2e60b8cd257d3e1f419e7eed\"\u003e\u003ccode\u003e0f19d85\u003c/code\u003e\u003c/a\u003e chore: fix missing heading in changelog (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16189\"\u003e#16189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/a16755d8e2fcd941e94cc967a5acd72c95eb7644\"\u003e\u003ccode\u003ea16755d\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T111101Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/9694ce943e2b7f4729b78e80b25a6729bfb292ca\"\u003e\u003ccode\u003e9694ce9\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T114549Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-oauthlib-v1.3.0...google-auth-oauthlib-v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 26.0 to 26.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cdel\u003ePEP 783: add handling for Emscripten wheel tags by \u003ca href=\"https://github.com/hoodmane\"\u003e\u003ccode\u003e@​hoodmane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/804\"\u003epypa/packaging#804\u003c/a\u003e\u003c/del\u003e (old name used in implementation, will be fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1099\"\u003epypa/packaging#1099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1065\"\u003epypa/packaging#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/944\"\u003epypa/packaging#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1071\"\u003epypa/packaging#1071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1119\"\u003epypa/packaging#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1110\"\u003epypa/packaging#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1068\"\u003epypa/packaging#1068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1146\"\u003epypa/packaging#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1078\"\u003epypa/packaging#1078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1150\"\u003epypa/packaging#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1140\"\u003epypa/packaging#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026gt;V\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1141\"\u003epypa/packaging#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1125\"\u003epypa/packaging#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1102\"\u003epypa/packaging#1102\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd pylock \u003ccode\u003eselect\u003c/code\u003e function by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1092\"\u003epypa/packaging#1092\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument pylock \u003ccode\u003eselect()\u003c/code\u003e method and \u003ccode\u003ePylockSelectError\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1153\"\u003epypa/packaging#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003efilename\u003c/code\u003e property to \u003ccode\u003ePackageSdist\u003c/code\u003e and \u003ccode\u003ePackageWheel\u003c/code\u003e, more validation by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1095\"\u003epypa/packaging#1095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGive preference to path over url by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1128\"\u003epypa/packaging#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate name/version consistency in file names by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1114\"\u003epypa/packaging#1114\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e\u0026gt;\u003c/code\u003e comparison for versions with dev+local segments by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1097\"\u003epypa/packaging#1097\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix incorrect self-comparison for \u003ccode\u003eInfinityType\u003c/code\u003e and \u003ccode\u003eNegativeInfinityType\u003c/code\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1093\"\u003epypa/packaging#1093\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCanonicalize when deduplicating specifiers in \u003ccode\u003eSpecifierSet\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1109\"\u003epypa/packaging#1109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix charset error message formatting by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1121\"\u003epypa/packaging#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle the \u003ccode\u003ekey\u003c/code\u003e parameter in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e when specifiers are empty and prerelease is \u003ccode\u003eFalse\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1096\"\u003epypa/packaging#1096\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize inner components of \u003ccode\u003erepr\u003c/code\u003e output by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1090\"\u003epypa/packaging#1090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSpecifier\u003c/code\u003e's \u003ccode\u003e===\u003c/code\u003e uses original string, not normalized, when available by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1124\"\u003epypa/packaging#1124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate int-max-str-digits \u003ccode\u003eValueError\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1155\"\u003epypa/packaging#1155\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd fast path for parsing simple versions (digits and dots only) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1082\"\u003epypa/packaging#1082\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd fast path for \u003ccode\u003eVersion\u003c/code\u003e to \u003ccode\u003eVersion\u003c/code\u003e comparison by skipping \u003ccode\u003e_key\u003c/code\u003e property by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1083\"\u003epypa/packaging#1083\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache \u003ccode\u003eVersion\u003c/code\u003e hash value in dedicated slot by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1118\"\u003epypa/packaging#1118\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOverhaul \u003ccode\u003e_cmpkey\u003c/code\u003e to remove use of custom objects by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1116\"\u003epypa/packaging#1116\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip \u003ccode\u003e__replace__\u003c/code\u003e in Specifier comparison if not needed by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1081\"\u003epypa/packaging#1081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSpecifierSet\u003c/code\u003e use \u003ccode\u003etuple\u003c/code\u003e instead of \u003ccode\u003efrozenset\u003c/code\u003e for \u003ccode\u003e_specs\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1108\"\u003epypa/packaging#1108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpeed up complex \u003ccode\u003eSpecifierSet\u003c/code\u003e filtering by implementing cost-based ordering by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1105\"\u003epypa/packaging#1105\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/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.1 - 2026-04-14\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFeatures:\n\u003cul\u003e\n\u003cli\u003ePEP 783: add handling for Emscripten wheel tags in (:pull:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag in (:pull:\u003ccode\u003e1099\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package in (:pull:\u003ccode\u003e1065\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module in (:pull:\u003ccode\u003e944\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module in (:pull:\u003ccode\u003e1071\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) in (:pull:\u003ccode\u003e1119\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags in (:pull:\u003ccode\u003e1110\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e in (:pull:\u003ccode\u003e1068\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's in (:pull:\u003ccode\u003e1146\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e in (:pull:\u003ccode\u003e1078\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e in (:pull:\u003ccode\u003e1150\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026amp;lt;V.postN\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1140\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026amp;gt;V\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1141\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private in (:pull:\u003ccode\u003e1125\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII in (:pull:\u003ccode\u003e1102\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd pylock \u003ccode\u003eselect\u003c/code\u003e function in (:pull:\u003ccode\u003e1092\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument pylock \u003ccode\u003eselect()\u003c/code\u003e method and \u003ccode\u003ePylockSelectError\u003c/code\u003e in (:pull:\u003ccode\u003e1153\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003efilename\u003c/code\u003e property to \u003ccode\u003ePackageSdist\u003c/code\u003e and \u003ccode\u003ePackageWheel\u003c/code\u003e, more validation in (:pull:\u003ccode\u003e1095\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eGive preference to path over url in (:pull:\u003ccode\u003e1128\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eValidate name/version consistency in file names in (:pull:\u003ccode\u003e1114\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e\u0026amp;gt;\u003c/code\u003e comparison for versions with dev+local segments in (:pull:\u003ccode\u003e1097\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect self-comparison for \u003ccode\u003eInfinityType\u003c/code\u003e and \u003ccode\u003eNegativeInfinityType\u003c/code\u003e in (:pull:\u003ccode\u003e1093\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalize when deduplicating specifiers in \u003ccode\u003eSpecifierSet\u003c/code\u003e in (:pull:\u003ccode\u003e1109\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix charset error message formatting in (:pull:\u003ccode\u003e1121\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eHandle the \u003ccode\u003ekey\u003c/code\u003e parameter in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e when specifiers are empty and prerelease is \u003ccode\u003eFalse\u003c/code\u003e in (:pull:\u003ccode\u003e1096\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eStandardize inner components of \u003ccode\u003erepr\u003c/code\u003e output in (:pull:\u003ccode\u003e1090\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSpecifier\u003c/code\u003e's \u003ccode\u003e===\u003c/code\u003e uses original string, not normalized, when available in (:pull:\u003ccode\u003e1124\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePropagate int-max-str-digits \u003ccode\u003eValueError\u003c/code\u003e in (:pull:\u003ccode\u003e1155\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd fast path for parsing simple versions (digits and dots only) in (:pull:\u003ccode\u003e1082\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast path for \u003ccode\u003eVersion\u003c/code\u003e to \u003ccode\u003eVersion\u003c/code\u003e comparison by skipping \u003ccode\u003e_key\u003c/code\u003e property in (:pull:\u003ccode\u003e1083\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCache \u003ccode\u003eVersion\u003c/code\u003e hash value in dedicated slot in (:pull:\u003ccode\u003e1118\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOverhaul \u003ccode\u003e_cmpkey\u003c/code\u003e to remove use of custom objects in (:pull:\u003ccode\u003e1116\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSkip \u003ccode\u003e__replace__\u003c/code\u003e in Specifier comparison if not needed in (:pull:\u003ccode\u003e1081\u003c/code\u003e)\u003cbr /\u003e\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\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/packaging/commit/c1a88a3e035e8bfe47dbc957f4a2493e8a7b4f3c\"\u003e\u003ccode\u003ec1a88a3\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/702c25ecc297054f9597acda987a75dd6833acf5\"\u003e\u003ccode\u003e702c25e\u003c/code\u003e\u003c/a\u003e docs: update changelog for 26.1 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1156\"\u003e#1156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3f4f5d46808f51709aba8341d4121f20752b3235\"\u003e\u003ccode\u003e3f4f5d4\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003eis_unsatisfiable\u003c/code\u003e on \u003ccode\u003eSpecifierSet\u003c/code\u003e using ranges (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1119\"\u003e#1119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/06c6555f44f0f7b84459c876375c5b1d52ee7fef\"\u003e\u003ccode\u003e06c6555\u003c/code\u003e\u003c/a\u003e Propagate int-max-str-digits ValueError (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1155\"\u003e#1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/905c90c1eb8c77dede11899194ca4b0f5eaf188d\"\u003e\u003ccode\u003e905c90c\u003c/code\u003e\u003c/a\u003e feat: option to validate compressed tag set sort order in `parse_wheel_filena...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/af0026cff97a8f28d165d6ac4afb58b2cdc8ffc5\"\u003e\u003ccode\u003eaf0026c\u003c/code\u003e\u003c/a\u003e docs(pylock): document select() method and PylockSelectError (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1153\"\u003e#1153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/668da8662a112036e4850b68980790cb2d10dae9\"\u003e\u003ccode\u003e668da86\u003c/code\u003e\u003c/a\u003e Rename format_full_version to _format_full_version to make it visibly private...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f294d529e2634798a98fd9cee6708307a5c1792c\"\u003e\u003ccode\u003ef294d52\u003c/code\u003e\u003c/a\u003e tests: do not reload the tags module (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1152\"\u003e#1152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/2c6c7dfa2d406e44b91f3f8d26eeed72437c9435\"\u003e\u003ccode\u003e2c6c7df\u003c/code\u003e\u003c/a\u003e feat: add handling for Emscripten wheels tags per PEP 783 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/804\"\u003e#804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/6762eea4de40da02c119d02cc77c907c6b446b86\"\u003e\u003ccode\u003e6762eea\u003c/code\u003e\u003c/a\u003e docs(markers): document \u0026amp; and | operators for combining Marker objects (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1151\"\u003e#1151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/26.0...26.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.6 to 0.3.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.9\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-13.\u003c/p\u003e\n\u003ch3\u003eHighlight\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eprek auto-update\u003c/code\u003e is now stricter about pinned revisions and more useful in CI.\nIt now keeps \u003ccode\u003erev\u003c/code\u003e and \u003ccode\u003e# frozen:\u003c/code\u003e comments in sync, can detect\n\u003ca href=\"https://docs.zizmor.sh/audits/#impostor-commit\"\u003eimpostor commits\u003c/a\u003e when validating pinned SHAs,\nand lets you use \u003ccode\u003eprek auto-update --check\u003c/code\u003e to fail on both available updates and frozen-ref\nmismatches without rewriting the config.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e$ prek auto-update\n# updates revs and repairs stale `# frozen:` comments\n\u003cp\u003e$ prek auto-update --freeze\u003c/p\u003e\n\u003ch1\u003ewrites frozen SHAs with matching \u003ccode\u003e# frozen: \u0026amp;lt;tag\u0026amp;gt;\u003c/code\u003e comments\u003c/h1\u003e\n\u003cp\u003e$ prek auto-update --check\u003c/p\u003e\n\u003ch1\u003eexits non-zero when updates are available, a \u003ccode\u003e# frozen:\u003c/code\u003e comment is stale,\u003c/h1\u003e\n\u003ch1\u003eor a pinned SHA does not belong to the fetched upstream refs\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCheck and sync frozen comments during auto-update (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1896\"\u003e#1896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle impostor commits in auto-update (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1919\"\u003e#1919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003elanguage: dotnet\u003c/code\u003e support (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1871\"\u003e#1871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHonor repo and worktree \u003ccode\u003ecore.hooksPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1892\"\u003e#1892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek run --no-fail-fast\u003c/code\u003e to override config file (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1859\"\u003e#1859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eforbid-new-submodules\u003c/code\u003e as builtin hook (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1853\"\u003e#1853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean stale patch files in \u003ccode\u003ecache gc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1877\"\u003e#1877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisplay auto-update results by config entry (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1922\"\u003e#1922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict patch directory permissions (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1876\"\u003e#1876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow tag names in \u003ccode\u003eauto-update --freeze\u003c/code\u003e output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1916\"\u003e#1916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a bitset for hook stages (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1860\"\u003e#1860\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalize CWD and GIT_ROOT paths (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1878\"\u003e#1878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure quotes are added for non-string revisions in \u003ccode\u003eauto-update\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1936\"\u003e#1936\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs for case of hooks modifying files with a non-zero exit code (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1879\"\u003e#1879\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/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-13.\u003c/p\u003e\n\u003ch3\u003eHighlight\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eprek auto-update\u003c/code\u003e is now stricter about pinned revisions and more useful in CI.\nIt now keeps \u003ccode\u003erev\u003c/code\u003e and \u003ccode\u003e# frozen:\u003c/code\u003e comments in sync, can detect\n\u003ca href=\"https://docs.zizmor.sh/audits/#impostor-commit\"\u003eimpostor commits\u003c/a\u003e when validating pinned SHAs,\nand lets you use \u003ccode\u003eprek auto-update --check\u003c/code\u003e to fail on both available updates and frozen-ref\nmismatches without rewriting the config.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e$ prek auto-update\n# updates revs and repairs stale `# frozen:` comments\n\u003cp\u003e$ prek auto-update --freeze\u003c/p\u003e\n\u003ch1\u003ewrites frozen SHAs with matching \u003ccode\u003e# frozen: \u0026amp;lt;tag\u0026amp;gt;\u003c/code\u003e comments\u003c/h1\u003e\n\u003cp\u003e$ prek auto-update --check\u003c/p\u003e\n\u003ch1\u003eexits non-zero when updates are available, a \u003ccode\u003e# frozen:\u003c/code\u003e comment is stale,\u003c/h1\u003e\n\u003ch1\u003eor a pinned SHA does not belong to the fetched upstream refs\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCheck and sync frozen comments during auto-update (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1896\"\u003e#1896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle impostor commits in auto-update (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1919\"\u003e#1919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003elanguage: dotnet\u003c/code\u003e support (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1871\"\u003e#1871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHonor repo and worktree \u003ccode\u003ecore.hooksPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1892\"\u003e#1892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek run --no-fail-fast\u003c/code\u003e to override config file (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1859\"\u003e#1859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eforbid-new-submodules\u003c/code\u003e as builtin hook (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1853\"\u003e#1853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean stale patch files in \u003ccode\u003ecache gc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1877\"\u003e#1877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisplay auto-update results by config entry (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1922\"\u003e#1922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict patch directory permissions (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1876\"\u003e#1876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow tag names in \u003ccode\u003eauto-update --freeze\u003c/code\u003e output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1916\"\u003e#1916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a bitset for hook stages (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1860\"\u003e#1860\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalize CWD and GIT_ROOT paths (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1878\"\u003e#1878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure quotes are added for non-string revisions in \u003ccode\u003eauto-update\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1936\"\u003e#1936\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs for case of hooks modifying files with a non-zero exit code (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1879\"\u003e#1879\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/3a9b9fe4ac5f202ca0202d195c3ba5ce4c9bb81c\"\u003e\u003ccode\u003e3a9b9fe\u003c/code\u003e\u003c/a\u003e Ensure quotes are added for non-string revisions in \u003ccode\u003eauto-update\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1936\"\u003e#1936\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/501d1db943dbf7369e5b082930641f48147481f0\"\u003e\u003ccode\u003e501d1db\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.9 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1934\"\u003e#1934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/dc98c4792d2f6cf53d7b2fda2a3b13fb9ccc5feb\"\u003e\u003ccode\u003edc98c47\u003c/code\u003e\u003c/a\u003e Honor repo and worktree \u003ccode\u003ecore.hooksPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1892\"\u003e#1892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/08c1f706ce69889c59533921f19fdff6eb579711\"\u003e\u003ccode\u003e08c1f70\u003c/code\u003e\u003c/a\u003e Remove bracket from auto-update project header (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1933\"\u003e#1933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/4292fe245bfe53caa01dac998d703a2c03f1d13d\"\u003e\u003ccode\u003e4292fe2\u003c/code\u003e\u003c/a\u003e Update pre-commit hook crate-ci/typos to v1.45.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1930\"\u003e#1930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/adafad090353056980fdefddc9d1cb92755b1f9d\"\u003e\u003ccode\u003eadafad0\u003c/code\u003e\u003c/a\u003e Update GitHub Actions (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1929\"\u003e#1929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"h...\n\n_Description has been truncated_","html_url":"https://github.com/gopidesupavan/airflow-cod/pull/36","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gopidesupavan%2Fairflow-cod/issues/36","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/36/packages"},{"uuid":"4294830246","node_id":"PR_kwDOPf23ns7T51N0","number":4011,"state":"open","title":"deps(deps-dev): Update pygithub requirement from \u003c3.0.0,\u003e=2.1.1 to \u003e=2.9.1,\u003c3.0.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":12,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-20T10:05:33.000Z","updated_at":"2026-04-20T12:08:29.569Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps-dev): Update","packages":[{"name":"pygithub","old_version":"\u003c3.0.0,\u003e=2.1.1","new_version":"\u003e=2.9.1,\u003c3.0.0","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [pygithub](https://github.com/pygithub/pygithub) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.1.1...v2.9.1\"\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 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\n---\n\n## 🔄 Workflow Execution Checklist\n\n### ✅ Always Required — fire automatically on every push (cannot be skipped)\n- [x] pre-merge-validation.yml — Pre-merge checks (always required)\n- [x] comment-review-gate.yml — Comment review gate (always required)\n- [x] deferral-language-gate.yml — Deferral language guard (always required)\n- [x] agent-auth-delegation.yml — Agent token delegation (always required)\n- [x] workflow-execution-gate.yml — WEC gate — parse checklist \u0026 arm allowed workflows (always required)\n\n### 🔄 Always Active — fire via push/workflow_run (need approval in Actions tab)\n- [x] copilot-agent-checkin.yml — Agent check-in / S221 guard (fires on push)\n- [x] copilot-agent-session-done.yml — Auto-post @copilot review after agent session (fires on workflow_run)\n- [x] copilot-iterative-self-healing.yml — Iterative self-healing CI loop (fires on workflow_run — needs approval)\n- [x] cost-gate.yml — Cost governance gate (called by agent-auth-delegation)\n\n### ⚡ Auto-Approve\n- [ ] auto-approve-workflows — Auto-Approve workflow to run (approves all pending runs on last commit SHA)\n\n### 🧪 Opt-In: Testing \u0026 Validation\n- [ ] validate.yml — Validation Pipeline (detect-secrets, ruff, pre-commit, sync-tracked)\n- [ ] resilient_validation.yml — Resilient Validation Suite (full pytest, 4 shards)\n- [ ] test-rag.yml — RAG Module Tests (coverage ≥95%)\n- [ ] nox_gates.yml — Nox quality gates (ruff, mypy, coverage)\n- [x] mypy-baseline.yml — mypy type-check anti-regression gate\n- [x] coverage-with-timeout.yml — Coverage with timeout guards\n- [ ] progressive-validation.yml — Progressive Validation Suite\n- [x] pre-flight-validation.yml — Pre-flight CI validation\n- [x] ci-checkpoint-validation.yml — CI Checkpoint Validation\n- [ ] data-quality-suite.yml — Data Quality \u0026 Determinism Suite\n- [x] auth-tests.yml — Authentication Tests\n- [x] pr-checks.yml — PR Checks (isolated cache, src/ scope)\n- [ ] html_visual_regression.yml — HTML Visual Regression Screenshots\n\n### 🔒 Opt-In: Security \u0026 Quality\n- [ ] security-scanning-suite.yml — Full security audit (bandit, pip-audit)\n- [x] codeql-analysis.yml — CodeQL SAST analysis\n- [x] actionlint-audit.yml — Workflow compliance audit (actionlint)\n- [x] semgrep_sarif.yml — Semgrep SAST (SARIF upload)\n- [x] auto-fix-common-issues.yml — Auto-Fix Common CI Issues\n- [x] auto-fix-pr-check.yml — PR Auto-Fix Check\n- [x] code-quality-coverage-suite.yml — Code Quality \u0026 Coverage Suite\n- [x] audit-qa-suite.yml — Audit \u0026 QA Suite (Unified)\n\n### 📄 Opt-In: Documentation\n- [ ] documentation-link-checker.yml — Documentation link checker\n- [x] pages-pre-merge-validation.yml — Pages pre-merge validation\n\n### ⚙️ Opt-In: Infrastructure \u0026 Deployment\n- [x] reference-integrity.yml — Reference integrity + agent size gate\n- [x] dependency-submission.yml — Resilient dependency submission\n- [ ] docker-build-push.yml — Build \u0026 push Docker image (GHCR)\n- [ ] rust_swarm_ci.yml — Rust-Python hybrid swarm CI/CD\n- [x] root-org-validation.yml — Root organization validation\n- [x] agent-registry-validation.yml — Agent registry validation\n- [x] qa-walkthrough.yml — QA walkthrough agent\n\n\u003e **⚠️ HARDENED AGENT INSTRUCTION (non-negotiable):** This entire WEC block MUST be\n\u003e appended verbatim to **every** PR body update — including every `report_progress` call.\n\u003e Copy the WEC block from the current PR body into the `prDescription` parameter, keeping\n\u003e **all previously-checked `[x]` items checked**. Never reset a maintainer selection to `[ ]`.\n\u003e Only 'always required' items may be auto-checked. All other items preserve their current state.\n","html_url":"https://github.com/Aries-Serpent/_codex_/pull/4011","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aries-Serpent%2F_codex_/issues/4011","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4011/packages"},{"uuid":"4293699389","node_id":"PR_kwDOOuks_87T2Le6","number":206,"state":"open","title":"chore: bump the patch-updates group with 6 updates","user":"dependabot[bot]","labels":["ignore-for-release","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-20T06:56:57.000Z","updated_at":"2026-04-20T06:58:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"patch-updates","update_count":6,"packages":[{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"mypy","old_version":"1.20.0","new_version":"1.20.1","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.15.9","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"commitizen","old_version":"4.13.9","new_version":"4.13.10","repository_url":"https://github.com/commitizen-tools/commitizen"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"fastmcp","old_version":"3.2.0","new_version":"3.2.4","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-updates group with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [mypy](https://github.com/python/mypy) | `1.20.0` | `1.20.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.9` | `0.15.11` |\n| [commitizen](https://github.com/commitizen-tools/commitizen) | `4.13.9` | `4.13.10` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.9.1` |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.2.0` | `3.2.4` |\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 `mypy` from 1.20.0 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.20.0...v1.20.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.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 `commitizen` from 4.13.9 to 4.13.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/b5d5040f7980a5d2bce320d2a1ea1e04ac54b00c\"\u003e\u003ccode\u003eb5d5040\u003c/code\u003e\u003c/a\u003e bump: version 4.13.9 → 4.13.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/4879df32b6aa7dc09dd19dffc3f2a68d7ea7666e\"\u003e\u003ccode\u003e4879df3\u003c/code\u003e\u003c/a\u003e ci(bump): fix email generation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/70c0c1f4cf055eb0a28637cc6a260353c531e496\"\u003e\u003ccode\u003e70c0c1f\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/8eff9819bdb74b429cac7d70d44726bef6077600\"\u003e\u003ccode\u003e8eff981\u003c/code\u003e\u003c/a\u003e ci: fix email for commitizenbot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/61926a771ba9d560a8d3a9e994a355b53b544dee\"\u003e\u003ccode\u003e61926a7\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/042a089ab11db863d06021548909d1eb8c845250\"\u003e\u003ccode\u003e042a089\u003c/code\u003e\u003c/a\u003e fix(ci): use commitizen bot to push tags and commits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/a06ce0cb656f5b053fb1bc3bcafcde85ee4241e1\"\u003e\u003ccode\u003ea06ce0c\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/97fb356d59a31a55b31eefb5d92cc1028bee25b8\"\u003e\u003ccode\u003e97fb356\u003c/code\u003e\u003c/a\u003e ci: use setup-cz\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/9abbdbda0c3edb42062e9f66467e1c4b85ab5591\"\u003e\u003ccode\u003e9abbdbd\u003c/code\u003e\u003c/a\u003e fix(init): set semver2 as default if not python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/33b69c33e44ed52eb55f1e5fd488ec375052d733\"\u003e\u003ccode\u003e33b69c3\u003c/code\u003e\u003c/a\u003e docs: improve readability\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commitizen-tools/commitizen/compare/v4.13.9...v4.13.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.9.0 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastmcp` from 3.2.0 to 3.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\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\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\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/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.0...v3.2.4\"\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/elementsinteractive/lgtm-ai/pull/206","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/elementsinteractive%2Flgtm-ai/issues/206","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/206/packages"},{"uuid":"4292392121","node_id":"PR_kwDOFvSVkM7TyD_g","number":331,"state":"closed","title":"Bump the python group across 1 directory with 25 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-27T00:09:18.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-20T00:10:38.000Z","updated_at":"2026-04-27T00:09:19.000Z","time_to_close":604720,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":25,"packages":[{"name":"pillow","old_version":"12.1.1","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"redis","old_version":"7.3.0","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"django","old_version":"5.2.12","new_version":"5.2.13","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.15.0","new_version":"65.16.1","repository_url":"https://github.com/sponsors/pennersr"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.41.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.41.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.41.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-django","old_version":"0.61b0","new_version":"0.62b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.61b0","new_version":"0.62b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"django-anymail","old_version":"14.0","new_version":"15.0","repository_url":"https://github.com/anymail/django-anymail"},{"name":"werkzeug","old_version":"3.1.6","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"django-stubs","old_version":"5.2.9","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.15.6","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"django-debug-toolbar","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-coverage-plugin","old_version":"3.2.0","new_version":"3.2.2","repository_url":"https://github.com/coveragepy/django_coverage_plugin"},{"name":"rust-just","old_version":"1.47.0","new_version":"1.49.0","repository_url":"https://github.com/gnpaone/rust-just"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 25 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.1` | `12.2.0` |\n| [redis](https://github.com/redis/redis-py) | `7.3.0` | `7.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.3.1` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.8.1` | `2.9.1` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260408` |\n| [django](https://github.com/django/django) | `5.2.12` | `5.2.13` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.15.0` | `65.16.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.0` |\n| [opentelemetry-instrumentation-django](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b0` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `14.0` | `15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.6` | `3.1.8` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `5.2.9` | `6.0.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.6` | `0.15.11` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `6.2.0` | `6.3.0` |\n| [django-coverage-plugin](https://github.com/coveragepy/django_coverage_plugin) | `3.2.0` | `3.2.2` |\n| [rust-just](https://github.com/gnpaone/rust-just) | `1.47.0` | `1.49.0` |\n\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 `redis` from 7.3.0 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/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\u003eSee full diff in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.3.0...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release fixes a compatibility issue with Python 3.15:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/pull/218\"\u003eredis/hiredis-py#218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/3cb8f069006f7138620b065fba973ccc490bde3d\"\u003e\u003ccode\u003e3cb8f06\u003c/code\u003e\u003c/a\u003e Version 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/2836c965d28606fecfc8989059edb36a0c4fb320\"\u003e\u003ccode\u003e2836c96\u003c/code\u003e\u003c/a\u003e MNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10151\"\u003ecelery/celery#10151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove on_after_finalize signal documentation by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10155\"\u003ecelery/celery#10155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-commutative example to clarify partial arg ordering in canvas docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10157\"\u003ecelery/celery#10157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant test_isa_mapping test (fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10077\"\u003e#10077\u003c/a\u003e) by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10103\"\u003ecelery/celery#10103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10162\"\u003ecelery/celery#10162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated args from redis get_connection call by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10036\"\u003ecelery/celery#10036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/celery/celery/issues/6912\"\u003e#6912\u003c/a\u003e rpc backend reconnection error by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10179\"\u003ecelery/celery#10179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) by \u003ca href=\"https://github.com/drichardson\"\u003e\u003ccode\u003e@​drichardson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10165\"\u003ecelery/celery#10165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit by \u003ca href=\"https://github.com/tsangwailam\"\u003e\u003ccode\u003e@​tsangwailam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10181\"\u003ecelery/celery#10181\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix O(K²) message bloat in a chain of chords by \u003ca href=\"https://github.com/Borzik\"\u003e\u003ccode\u003e@​Borzik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10171\"\u003ecelery/celery#10171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mock connection interfaces to prevent \u003ccode\u003eTypeError\u003c/code\u003e during exception handling by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10178\"\u003ecelery/celery#10178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks by \u003ca href=\"https://github.com/aurangzaib048\"\u003e\u003ccode\u003e@​aurangzaib048\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10159\"\u003ecelery/celery#10159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003ereconnect_on_error\u003c/code\u003e to \u003ccode\u003eBaseResultConsumer\u003c/code\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10189\"\u003ecelery/celery#10189\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epep 649 by \u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10187\"\u003ecelery/celery#10187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix#9722 friendly status errors for CLI by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10190\"\u003ecelery/celery#10190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify after_return behavior for retried tasks by \u003ca href=\"https://github.com/KianAnbarestani\"\u003e\u003ccode\u003e@​KianAnbarestani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10192\"\u003ecelery/celery#10192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd compression header to message protocol docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10156\"\u003ecelery/celery#10156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated word in bootsteps comment by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10153\"\u003ecelery/celery#10153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove outdated autoreloader section from extending docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10154\"\u003ecelery/celery#10154\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/celery/celery/blob/v5.6.3/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.3\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-03-26\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix Django worker recursion bug + defensive checks for pool_cls.__module__ ([#10048](https://github.com/celery/celery/issues/10048))\n- Docs: Update user_preload_options example to use click. ([#10056](https://github.com/celery/celery/issues/10056))\n- Fix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo ([#10060](https://github.com/celery/celery/issues/10060))\n- Fix broken images on PyPI page ([#10066](https://github.com/celery/celery/issues/10066))\n- Remove broken reference. ([#10071](https://github.com/celery/celery/issues/10071))\n- Removed --dist=loadscope from smoke tests ([#10073](https://github.com/celery/celery/issues/10073))\n- Docs: Clarify task_retry signal args may be None ([#10076](https://github.com/celery/celery/issues/10076))\n- Update example for Django ([#10081](https://github.com/celery/celery/issues/10081))\n- Make tests compatible with pymongo \u0026gt;= 4.16 ([#10074](https://github.com/celery/celery/issues/10074))\n- fix: source install of cassandra-driver ([#10105](https://github.com/celery/celery/issues/10105))\n- fix: register task cross-reference role in Sphinx extension ([#10100](https://github.com/celery/celery/issues/10100))\n- fix: avoid cycle detection in native delayed delivery ([#10095](https://github.com/celery/celery/issues/10095))\n- fix(asynpool): avoid AttributeError when proc lacks _sentinel_poll ([#10086](https://github.com/celery/celery/issues/10086))\n- fix dusk_astronomical horizon sign (+18 -\u0026gt; -18) ([#10121](https://github.com/celery/celery/issues/10121))\n- Fix/10106 onupdate col use lambda func ([#10108](https://github.com/celery/celery/issues/10108))\n- Fix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 ([#10083](https://github.com/celery/celery/issues/10083)) ([#10123](https://github.com/celery/celery/issues/10123))\n- Fix 10109 db backend connection health ([#10124](https://github.com/celery/celery/issues/10124))\n- Database Backend filter unsupport sql engine arguments with nullpool [#7355](https://github.com/celery/celery/issues/7355) ([#10134](https://github.com/celery/celery/issues/10134))\n- fix(beat): correct argument order in Service.__reduce__ ([#10137](https://github.com/celery/celery/issues/10137))\n- ci: declare explicit read-only token permissions in workflow jobs ([#10139](https://github.com/celery/celery/issues/10139))\n- chore: 'boto3to' to 'boto3 to' ([#10133](https://github.com/celery/celery/issues/10133))\n- Database Backend: Add missing index on date_done (Fixes [#10097](https://github.com/celery/celery/issues/10097)) ([#10098](https://github.com/celery/celery/issues/10098))\n- docs: fix typo in CONTRIBUTING.rst ([#10141](https://github.com/celery/celery/issues/10141))\n- Refer to Flower / Prometheus for monitoring ([#10140](https://github.com/celery/celery/issues/10140))\n- docs: remove duplicated words in broker and routing docs ([#10146](https://github.com/celery/celery/issues/10146))\n- docs: fix stale version reference and grammar in README ([#10145](https://github.com/celery/celery/issues/10145))\n- docs: fix wording in Celery 5.3 worker pool notes ([#10149](https://github.com/celery/celery/issues/10149))\n- docs: fix duplicated wording in 3.1 changelog entry ([#10152](https://github.com/celery/celery/issues/10152))\n- docs: fix changelog typo in context manager wording ([#10144](https://github.com/celery/celery/issues/10144))\n- Fix/10096 worker fails to reconnect after redis failover ([#10151](https://github.com/celery/celery/issues/10151))\n- Improve on_after_finalize signal documentation ([#10155](https://github.com/celery/celery/issues/10155))\n- Add non-commutative example to clarify partial arg ordering in canvas docs ([#10157](https://github.com/celery/celery/issues/10157))\n- Remove redundant test_isa_mapping test (fixes [#10077](https://github.com/celery/celery/issues/10077)) ([#10103](https://github.com/celery/celery/issues/10103))\n- Upgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg ([#10162](https://github.com/celery/celery/issues/10162))\n- Remove deprecated args from redis get_connection call ([#10036](https://github.com/celery/celery/issues/10036))\n- Fix [#6912](https://github.com/celery/celery/issues/6912) rpc backend reconnection error ([#10179](https://github.com/celery/celery/issues/10179))\n- Fix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) ([#10165](https://github.com/celery/celery/issues/10165))\n- docs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit ([#10181](https://github.com/celery/celery/issues/10181))\n- Fix O(K²) message bloat in a chain of chords ([#10171](https://github.com/celery/celery/issues/10171))\n- Fix mock connection interfaces to prevent `TypeError` during exception handling ([#10178](https://github.com/celery/celery/issues/10178))\n- fix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks ([#10159](https://github.com/celery/celery/issues/10159))\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/3f4d8d795ad128bd7430cc5dc174a802cded425c\"\u003e\u003ccode\u003e3f4d8d7\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.3 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10221\"\u003e#10221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a989e8cf8876274b1f0612abffeeb2e9995ed321\"\u003e\u003ccode\u003ea989e8c\u003c/code\u003e\u003c/a\u003e fix: clear the timer while catch the exception (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10218\"\u003e#10218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d06de5f047620b0ea2bdbdb3c0c56137b79ae9a1\"\u003e\u003ccode\u003ed06de5f\u003c/code\u003e\u003c/a\u003e Chore(deps): Bump nick-fields/retry from 3 to 4 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10213\"\u003e#10213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/c3c19c31dc3e21f16d4d85a8ba8401a9223ace09\"\u003e\u003ccode\u003ec3c19c3\u003c/code\u003e\u003c/a\u003e Fix: prioritize request ignore_result over task definition (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10184\"\u003e#10184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d23be53f6f3600d48df35a797c63eb1c7d4d4b97\"\u003e\u003ccode\u003ed23be53\u003c/code\u003e\u003c/a\u003e Remove outdated autoreloader section from extending docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10154\"\u003e#10154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ada2da7475a5fa9f9ad079149a5d6864634abc28\"\u003e\u003ccode\u003eada2da7\u003c/code\u003e\u003c/a\u003e docs: fix duplicated word in bootsteps comment\\n\\nSigned-off-by: Rohan Santho...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f45f62beb3b16ae960944f8c97de13ccf15f2d0a\"\u003e\u003ccode\u003ef45f62b\u003c/code\u003e\u003c/a\u003e Add compression header to message protocol docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10156\"\u003e#10156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9a270925546ed9d0ca0303fb5006edc86b705fd9\"\u003e\u003ccode\u003e9a27092\u003c/code\u003e\u003c/a\u003e docs: clarify after_return behavior for retried tasks (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10192\"\u003e#10192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6ee6230cd80ef6c3e7482e1f4cd970fbb0629b23\"\u003e\u003ccode\u003e6ee6230\u003c/code\u003e\u003c/a\u003e Fix#9722 friendly status errors for CLI (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10190\"\u003e#10190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a9a2d4cecaf0e58c401ad6f68f022afa19770ac2\"\u003e\u003ccode\u003ea9a2d4c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10186\"\u003e#10186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.6.2...v5.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.8.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.8.1...v2.9.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 `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 `django-allauth` from 65.15.0 to 65.16.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\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 `opentelemetry-api` from 1.40.0 to 1.41.0\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.41.0/0.62b0 (2026-04-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ehost\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].host\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5002\"\u003e#5002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003econtainer\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].container\u003c/code\u003e, using entry point loading of the \u003ccode\u003eopentelemetry-resource-detector-containerid\u003c/code\u003e contrib package\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5004\"\u003e#5004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_tracer_provider\u003c/code\u003e/\u003ccode\u003econfigure_tracer_provider\u003c/code\u003e to declarative file configuration, enabling TracerProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4985\"\u003e#4985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnabled the flake8-tidy-import plugins rules for the ruff linter. These rules throw warnings for relative imports in the modules.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5019\"\u003e#5019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Fix \u003ccode\u003eAttributeError\u003c/code\u003e in \u003ccode\u003eExplicitBucketHistogramAggregation\u003c/code\u003e when applied to non-Histogram instruments without explicit boundaries\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5034\"\u003e#5034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eBatchLogRecordProcessor\u003c/code\u003e default \u003ccode\u003eschedule_delay_millis\u003c/code\u003e from 5000ms to 1000ms to comply with the OTel specification. Note: logs may be exported 5x more frequently by default (e.g. for users who don't explicitly set the \u003ccode\u003eOTEL_BLRP_SCHEDULE_DELAY\u003c/code\u003e env var).\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4998\"\u003e#4998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eprocess\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].process\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5001\"\u003e#5001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add shared \u003ccode\u003e_parse_headers\u003c/code\u003e helper for declarative config OTLP exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Replace a broad exception in attribute cleaning tests to satisfy pylint in the \u003ccode\u003elint-opentelemetry-api\u003c/code\u003e CI job\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_meter_provider\u003c/code\u003e/\u003ccode\u003econfigure_meter_provider\u003c/code\u003e to declarative file configuration, enabling MeterProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4987\"\u003e#4987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_resource\u003c/code\u003e and \u003ccode\u003ecreate_propagator\u003c/code\u003e/\u003ccode\u003econfigure_propagator\u003c/code\u003e to declarative file configuration, enabling Resource and propagator instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4979\"\u003e#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Map Python \u003ccode\u003eCRITICAL\u003c/code\u003e log level to OTel \u003ccode\u003eFATAL\u003c/code\u003e severity text per the specification\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4984\"\u003e#4984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add file configuration support with YAML/JSON loading, environment variable substitution, and schema validation against the vendored OTel config JSON schema\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4898\"\u003e#4898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix intermittent CI failures in \u003ccode\u003egetting-started\u003c/code\u003e and \u003ccode\u003etracecontext\u003c/code\u003e jobs caused by GitHub git CDN SHA propagation lag by installing contrib packages from the already-checked-out local copy instead of a second git clone\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4958\"\u003e#4958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: fix type annotations on \u003ccode\u003eMetricReader\u003c/code\u003e and related types\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4938/\"\u003e#4938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement log creation metric\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4935\"\u003e#4935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement metric reader metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4970\"\u003e#4970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement processor metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5012\"\u003e#5012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: upgrade vendored OTel configuration schema from v1.0.0-rc.3 to v1.0.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4965\"\u003e#4965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimprove check-links ci job\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4978\"\u003e#4978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve some Pyright type errors in Span/ReadableSpan and utility stubs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4973\"\u003e#4973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-prometheus\u003c/code\u003e: Fix metric name prefix\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4895\"\u003e#4895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add deepcopy support for \u003ccode\u003eBoundedAttributes\u003c/code\u003e and \u003ccode\u003eBoundedList\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4934\"\u003e#4934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-proto-json\u003c/code\u003e, \u003ccode\u003eopentelemetry-codegen-json\u003c/code\u003e: Implement custom protoc plugin to generate OTLP JSON class definitions\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4910\"\u003e#4910\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/1a178fcc5c689516849ced80fb2533fe7db7a80f\"\u003e\u003ccode\u003e1a178fc\u003c/code\u003e\u003c/a\u003e [release/v1.41.x-0.62bx] Prepare release 1.41.0/0.62b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5064\"\u003e#5064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/37dea4bbdb1a3c83b96fc22c2f68a848b4989fb5\"\u003e\u003ccode\u003e37dea4b\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/mfosterw/cookiestocracy/pull/331","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfosterw%2Fcookiestocracy/issues/331","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/331/packages"},{"uuid":"4277086715","node_id":"PR_kwDOJlvfws7TCK2U","number":142,"state":"open","title":"chore(deps): bump pygithub from 2.3.0 to 2.9.1","user":"dependabot[bot]","labels":["📦 Dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-16T16:26:36.000Z","updated_at":"2026-04-16T16:26:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"pygithub","old_version":"2.3.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.3.0 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.3.0...v2.9.1\"\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=pygithub\u0026package-manager=pip\u0026previous-version=2.3.0\u0026new-version=2.9.1)](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/actuarysailor/gha-repo-manager/pull/142","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/actuarysailor%2Fgha-repo-manager/issues/142","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/142/packages"},{"uuid":"4266688730","node_id":"PR_kwDORXHJ9M7SiKNV","number":30,"state":"open","title":"Bump pygithub from 2.6.1 to 2.9.1 in /tools/base","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-04-15T06:15:50.000Z","updated_at":"2026-04-15T06:17:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pygithub","old_version":"2.6.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":"/tools/base","ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.6.1 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.6.1...v2.9.1\"\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=pygithub\u0026package-manager=pip\u0026previous-version=2.6.1\u0026new-version=2.9.1)](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/sg-evals/envoy--25f893b4/pull/30","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sg-evals%2Fenvoy--25f893b4/issues/30","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/30/packages"},{"uuid":"4266629218","node_id":"PR_kwDOBq29_87Sh_HD","number":1676,"state":"closed","title":"build(deps): bump pygithub from 2.9.0 to 2.9.1 in /tools/base","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-21T19:33:18.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-15T06:04:04.000Z","updated_at":"2026-04-21T19:33:20.000Z","time_to_close":566954,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":"/tools/base","ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.9.0 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\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=pygithub\u0026package-manager=pip\u0026previous-version=2.9.0\u0026new-version=2.9.1)](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/derekargueta/envoy/pull/1676","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekargueta%2Fenvoy/issues/1676","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1676/packages"}],"issue_packages":[{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":null,"pr_created_at":"2026-05-30T19:59:46.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"4555529108","node_id":"PR_kwDOF8_QEs7g_sBJ","number":1989,"state":"open","title":"⬆ Bump the python-packages group across 1 directory with 9 updates","user":"dependabot[bot]","labels":["dependencies","internal","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-30T19:59:46.000Z","updated_at":"2026-05-31T06:06:01.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"⬆ Bump","group_name":"python-packages","update_count":9,"packages":[{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"zensical","old_version":"0.0.42","new_version":"0.0.43","repository_url":"https://github.com/zensical/zensical"},{"name":"fastapi","old_version":"0.136.1","new_version":"0.136.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"ruff","old_version":"0.15.13","new_version":"0.15.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"ty","old_version":"0.0.35","new_version":"0.0.39","repository_url":"https://github.com/astral-sh/ty"},{"name":"prek","old_version":"0.3.13","new_version":"0.4.1","repository_url":"https://github.com/j178/prek"},{"name":"zizmor","old_version":"1.24.1","new_version":"1.25.2","repository_url":"https://github.com/zizmorcore/zizmor"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 9 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.4` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.42` | `0.0.43` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.1` | `0.136.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.13` | `0.15.14` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.35` | `0.0.39` |\n| [prek](https://github.com/j178/prek) | `0.3.13` | `0.4.1` |\n| [zizmor](https://github.com/zizmorcore/zizmor) | `1.24.1` | `1.25.2` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.9.1` |\n\n\nUpdates `pydantic` from 2.12.5 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\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e 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/13096\"\u003e#13096\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.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e 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/13084\"\u003e#13084\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.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\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.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/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\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e 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/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e 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/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.4\"\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 `zensical` from 0.0.42 to 0.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zensical/zensical/releases\"\u003ezensical's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.43\u003c/h2\u003e\n\u003ch2\u003eSummary\u003c/h2\u003e\n\u003cp\u003eThis version fixes further edge cases in link validation, and adds support for UTF-8 encoding with byte-order-marks.\u003c/p\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e1e873a3 \u003cstrong\u003ecompat\u003c/strong\u003e – ignore links in code after literal dollar during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/691\"\u003e#691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e62a0feb \u003cstrong\u003ezensical\u003c/strong\u003e – report \u003ccode\u003epath.md/#anchor\u003c/code\u003e as invalid during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/690\"\u003e#690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e7be40c6 \u003cstrong\u003ecompat\u003c/strong\u003e – ignore GitHub-style callouts during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/688\"\u003e#688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e85c3b1e \u003cstrong\u003ecompat\u003c/strong\u003e – ignore \u003ccode\u003e[TOC]\u003c/code\u003e marker during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/686\"\u003e#686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edaafc8b \u003cstrong\u003ezensical\u003c/strong\u003e – filter out icons folder when watching theme directories (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/693\"\u003e#693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e913fd61 \u003cstrong\u003ezensical\u003c/strong\u003e – strip Byte-Order-Mark (BOM) from Markdown files (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/687\"\u003e#687\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/7d2178a8a9df7c559a746643ccfa34f1531f20a3\"\u003e\u003ccode\u003e7d2178a\u003c/code\u003e\u003c/a\u003e chore: release v0.0.43\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/35a20425ac3a30007ed2ba9e1d54bbdae98399cd\"\u003e\u003ccode\u003e35a2042\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zensical/zensical/issues/697\"\u003e#697\u003c/a\u003e from zensical/fix/validation-regressions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/1e873a397c314843444adb68dcd5238af62dfe22\"\u003e\u003ccode\u003e1e873a3\u003c/code\u003e\u003c/a\u003e fix: ignore links in code after literal dollar during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/691\"\u003e#691\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/62a0feb8f45ed10ea3c4c9816501ff1c2245f244\"\u003e\u003ccode\u003e62a0feb\u003c/code\u003e\u003c/a\u003e fix: report \u003ccode\u003epath.md/#anchor\u003c/code\u003e as invalid during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/690\"\u003e#690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/7be40c6ceb4407992a1d93cb6e30563b737e4724\"\u003e\u003ccode\u003e7be40c6\u003c/code\u003e\u003c/a\u003e fix: ignore GitHub-style callouts during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/688\"\u003e#688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/85c3b1e321dc4eaa60fc7bd885a4da509e1e4127\"\u003e\u003ccode\u003e85c3b1e\u003c/code\u003e\u003c/a\u003e fix: ignore \u003ccode\u003e[TOC]\u003c/code\u003e marker during link validation (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/686\"\u003e#686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/daafc8becba138735046b63dcf839c89c9f8c024\"\u003e\u003ccode\u003edaafc8b\u003c/code\u003e\u003c/a\u003e fix: filter out icons folder when watching theme directories (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/693\"\u003e#693\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zensical/zensical/commit/913fd61670ae2d1a01c76388613f6378c9431a3d\"\u003e\u003ccode\u003e913fd61\u003c/code\u003e\u003c/a\u003e fix: strip Byte-Order-Mark (BOM) from Markdown files (\u003ca href=\"https://redirect.github.com/zensical/zensical/issues/687\"\u003e#687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/zensical/zensical/compare/v0.0.42...v0.0.43\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.136.1 to 0.136.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.3\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (the default). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15589\"\u003e#15589\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.2\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e♻️ Validate Server Sent Event fields to avoid applications from sending broken data. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15588\"\u003e#15588\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Document \u003ccode\u003e--entrypoint\u003c/code\u003e CLI option. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15464\"\u003e#15464\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update and simplify docs about help and management. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15583\"\u003e#15583\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add docs references to central contributing docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15580\"\u003e#15580\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15577\"\u003e#15577\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🍱 Update sponsors: TalorData image. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15562\"\u003e#15562\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update docs, simplify usage of admonitions, only default ones. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15553\"\u003e#15553\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix image URLs in \u003ccode\u003eindex.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15534\"\u003e#15534\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e✏️ Fix Azkaban spelling typo in \u003ccode\u003evirtual-environments.md‎\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15463\"\u003e#15463\u003c/a\u003e by \u003ca href=\"https://github.com/isaacbernat\"\u003e\u003ccode\u003e@​isaacbernat\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Improve layout and styling. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15462\"\u003e#15462\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Refactor opinions section with interactive tabs and new logos. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15458\"\u003e#15458\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add FastAPI Conf '26 announcement to docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15457\"\u003e#15457\u003c/a\u003e by \u003ca href=\"https://github.com/alejsdev\"\u003e\u003ccode\u003e@​alejsdev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Improve translation consistency in \u003ccode\u003e‎docs/pt/docs/advanced/generate-clients.md‎\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15456\"\u003e#15456\u003c/a\u003e by \u003ca href=\"https://github.com/Will-thom\"\u003e\u003ccode\u003e@​Will-thom\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15530\"\u003e#15530\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for uk (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15529\"\u003e#15529\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for pt (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15528\"\u003e#15528\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for de (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15527\"\u003e#15527\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15526\"\u003e#15526\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15525\"\u003e#15525\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15524\"\u003e#15524\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for fr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15522\"\u003e#15522\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for es (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15523\"\u003e#15523\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15520\"\u003e#15520\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ru (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15521\"\u003e#15521\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Fix typos in Spanish LLM-prompt. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15472\"\u003e#15472\u003c/a\u003e by \u003ca href=\"https://github.com/crr004\"\u003e\u003ccode\u003e@​crr004\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✅ Update tests, don't double dispose the engine. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15587\"\u003e#15587\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⚡️ Speed up test suite via caching and fixture scopes to make it ~24% faster. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/13583\"\u003e#13583\u003c/a\u003e by \u003ca href=\"https://github.com/dikos1337\"\u003e\u003ccode\u003e@​dikos1337\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15585\"\u003e#15585\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump urllib3 from 2.6.3 to 2.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15502\"\u003e#15502\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump idna from 3.11 to 3.15. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15565\"\u003e#15565\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.15.0 to 4.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15571\"\u003e#15571\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Migrate docs from MkDocs to Zensical. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15563\"\u003e#15563\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15548\"\u003e#15548\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\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/fastapi/fastapi/commit/82064857539e6286522c347b4b11331b48dd2378\"\u003e\u003ccode\u003e8206485\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c910e0139f983d0e04e2d1d235cd71803afeae34\"\u003e\u003ccode\u003ec910e01\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/063b5bf582d31fb155cc6bc6f88cf512329d0fd5\"\u003e\u003ccode\u003e063b5bf\u003c/code\u003e\u003c/a\u003e ♻️ Do not accept underscore headers when using \u003ccode\u003econvert_underscores=True\u003c/code\u003e (th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/22b02e26f9e8c7e32bd8266e2b0ebe8bb3a0db2b\"\u003e\u003ccode\u003e22b02e2\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3b252a2a22ba27a8ab83d6bde7d9cddbc5bf738e\"\u003e\u003ccode\u003e3b252a2\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7fb7851b3389f24c51701d705458989be53ccbb\"\u003e\u003ccode\u003ec7fb785\u003c/code\u003e\u003c/a\u003e ♻️ Validate Server Sent Event fields to avoid applications from sending broke...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cb83b83dcf78eab4ea17d504db5abcda705fbdc4\"\u003e\u003ccode\u003ecb83b83\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/00f805cec94c0bf48c1f9a563535a3ab2e6f90ab\"\u003e\u003ccode\u003e00f805c\u003c/code\u003e\u003c/a\u003e ✅ Update tests, don't double dispose the engine (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15587\"\u003e#15587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3675137523dc167981aa3a3c44599b4f3079ccd8\"\u003e\u003ccode\u003e3675137\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7b57e42986bb4d40c9eb6580537d13fb8e76097e\"\u003e\u003ccode\u003e7b57e42\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003e--entrypoint\u003c/code\u003e CLI option (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15464\"\u003e#15464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.1...0.136.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.13 to 0.15.14\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.14\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\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/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\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-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\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/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\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/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\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/ntBre\"\u003e\u003ccode\u003e@​ntBre\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.14\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-task-implicit-multiple-outputs\u003c/code\u003e (\u003ccode\u003eAIR202\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25152\"\u003e#25152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Mark \u003ccode\u003ePTH101\u003c/code\u003e fix as unsafe when first argument is a class attribute annotated as \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25086\"\u003e#25086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Implement \u003ccode\u003etoo-many-try-statements\u003c/code\u003e (\u003ccode\u003eW0717\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23970\"\u003e#23970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003eincorrect-decorator-order\u003c/code\u003e (\u003ccode\u003eRUF074\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23461\"\u003e#23461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Add \u003ccode\u003efallible-context-manager\u003c/code\u003e (\u003ccode\u003eRUF075\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22844\"\u003e#22844\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix lambda formatting in interpolated string expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25144\"\u003e#25144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat generic \u003ccode\u003efrozenset\u003c/code\u003e annotations as immutable (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25251\"\u003e#25251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-type-checking\u003c/code\u003e] Avoid \u003ccode\u003estrict\u003c/code\u003e behavior when \u003ccode\u003efuture-annotations\u003c/code\u003e are enabled (\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/25035\"\u003e#25035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Avoid false positives in \u003ccode\u003eelse\u003c/code\u003e clause (\u003ccode\u003ePLR1733\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25177\"\u003e#25177\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-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25272\"\u003e#25272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve f-string source verbatim in \u003ccode\u003eSIM101\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25061\"\u003e#25061\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate code example setting Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd full PEP 798 support (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25104\"\u003e#25104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a parser recursion limit (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate various \u003ccode\u003eruff_python_stdlib\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25273\"\u003e#25273\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/ocaballeror\"\u003e\u003ccode\u003e@​ocaballeror\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/baltasarblanco\"\u003e\u003ccode\u003e@​baltasarblanco\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aconal-com\"\u003e\u003ccode\u003e@​aconal-com\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/JelleZijlstra\"\u003e\u003ccode\u003e@​JelleZijlstra\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/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adityasingh2400\"\u003e\u003ccode\u003e@​adityasingh2400\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/9ad2da3015e5faf73bdc5f1d09df3e47238e3edf\"\u003e\u003ccode\u003e9ad2da3\u003c/code\u003e\u003c/a\u003e Bump 0.15.14 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25295\"\u003e#25295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c714e84952510696c05ec21b0158a3548898f594\"\u003e\u003ccode\u003ec714e84\u003c/code\u003e\u003c/a\u003e [ty] Modernize setup of union types in mdtests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25291\"\u003e#25291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8a8e35ebfe318e2467a0f276e5d1a3a9032a55ad\"\u003e\u003ccode\u003e8a8e35e\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Skip \u003ccode\u003eC417\u003c/code\u003e for lambdas with positional-only parame...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aea5ed4d278017057c2e842c6c3a2e92ad71495f\"\u003e\u003ccode\u003eaea5ed4\u003c/code\u003e\u003c/a\u003e Avoid unnecessary parser lookahead for operators (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25290\"\u003e#25290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e9d72bb420f26c23e6660bfce4dfa0028b931bff\"\u003e\u003ccode\u003ee9d72bb\u003c/code\u003e\u003c/a\u003e [ty] Allow enum member accesses on \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6cbd59b511a92d5f408db57bde33367c0d47b672\"\u003e\u003ccode\u003e6cbd59b\u003c/code\u003e\u003c/a\u003e Set \u003ccode\u003eexclude-newer = \u0026quot;7 days\u0026quot;\u003c/code\u003e in our PEP-723 scripts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25285\"\u003e#25285\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9999a3967ae28fe3295131e8883b6947f272a076\"\u003e\u003ccode\u003e9999a39\u003c/code\u003e\u003c/a\u003e Update code example on how to update Neovim LSP log level (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25284\"\u003e#25284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/67d8c544f0d1c526a2fc60d4bb1358fd7956d178\"\u003e\u003ccode\u003e67d8c54\u003c/code\u003e\u003c/a\u003e [ty] Retain recursively-defined state in binary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25277\"\u003e#25277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/25a3191140dc0467f9d196f35c128fefde269261\"\u003e\u003ccode\u003e25a3191\u003c/code\u003e\u003c/a\u003e [ty] Refine Callable class-decorator fallback for unknown results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25250\"\u003e#25250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c423054dc09e5b644c926b6b527b6accfbe693e9\"\u003e\u003ccode\u003ec423054\u003c/code\u003e\u003c/a\u003e Add a recursion limit to the parser (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24810\"\u003e#24810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.13...0.15.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ty` from 0.0.35 to 0.0.39\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ty/releases\"\u003ety's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.39\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-22.\u003c/p\u003e\n\u003cp\u003eThis release removes the Python 3.9 branches from our vendored standard library stubs. ty now only has \u0026quot;full\u0026quot; support for\nPython 3.10 and later, but will still report version-specific syntax errors and other diagnostics when \u003ccode\u003e--python-version 3.9\u003c/code\u003e\nis provided via the CLI.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid panicking on \u003ccode\u003e__new__\u003c/code\u003e assignments to classes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25282\"\u003e#25282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve declaration order when synthesizing class fields (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25249\"\u003e#25249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003edict\u003c/code\u003e-compatible fallbacks in TypedDict unions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25242\"\u003e#25242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetain recursively-defined state in binary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25277\"\u003e#25277\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Quick Fix to remove redundant cast (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25211\"\u003e#25211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClassify property declaration semantic tokens (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25322\"\u003e#25322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEscape HTML syntax in docstring rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25247\"\u003e#25247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer symbols from standard library over those of the same name from third party libraries for import completions. (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25108\"\u003e#25108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport type aliases in document symbols (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25302\"\u003e#25302\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDiagnostics\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd error context for extra callable parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25269\"\u003e#25269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid exponential blow-up in fall-through narrowing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25278\"\u003e#25278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up include filtering for projects with many literal include patterns (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25266\"\u003e#25266\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow enum member accesses on \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit a diagnostic for subclassing with \u003ccode\u003eorder=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21704\"\u003e#21704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFull-scope bidirectional inference for unconstrained container literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25279\"\u003e#25279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInfer \u003ccode\u003edict(TypedDict)\u003c/code\u003e as \u003ccode\u003edict[str, object]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24852\"\u003e#24852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefine Callable class-decorator fallback for unknown results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25250\"\u003e#25250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject incompatible explicit variance in generic base classes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25327\"\u003e#25327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport multi-inference through type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25245\"\u003e#25245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25271\"\u003e#25271\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25172\"\u003e#25172\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/ibraheemdev\"\u003e\u003ccode\u003e@​ibraheemdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MatthewMckee4\"\u003e\u003ccode\u003e@​MatthewMckee4\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sqqueak\"\u003e\u003ccode\u003e@​sqqueak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\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/ty/blob/main/CHANGELOG.md\"\u003ety's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.39\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-22.\u003c/p\u003e\n\u003cp\u003eThis release removes the Python 3.9 branches from our vendored standard library stubs. ty now only has \u0026quot;full\u0026quot; support for\nPython 3.10 and later, but will still report version-specific syntax errors and other diagnostics when \u003ccode\u003e--python-version 3.9\u003c/code\u003e\nis provided via the CLI.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid panicking on \u003ccode\u003e__new__\u003c/code\u003e assignments to classes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25282\"\u003e#25282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve declaration order when synthesizing class fields (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25249\"\u003e#25249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003edict\u003c/code\u003e-compatible fallbacks in TypedDict unions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25242\"\u003e#25242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRetain recursively-defined state in binary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25277\"\u003e#25277\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Quick Fix to remove redundant cast (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25211\"\u003e#25211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClassify property declaration semantic tokens (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25322\"\u003e#25322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEscape HTML syntax in docstring rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25247\"\u003e#25247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer symbols from standard library over those of the same name from third party libraries for import completions. (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25108\"\u003e#25108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport type aliases in document symbols (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25302\"\u003e#25302\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDiagnostics\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd error context for extra callable parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25269\"\u003e#25269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid exponential blow-up in fall-through narrowing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25278\"\u003e#25278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSpeed up include filtering for projects with many literal include patterns (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25266\"\u003e#25266\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow enum member accesses on \u003ccode\u003eself\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25077\"\u003e#25077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit a diagnostic for subclassing with \u003ccode\u003eorder=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21704\"\u003e#21704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFull-scope bidirectional inference for unconstrained container literals (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25279\"\u003e#25279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInfer \u003ccode\u003edict(TypedDict)\u003c/code\u003e as \u003ccode\u003edict[str, object]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24852\"\u003e#24852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefine Callable class-decorator fallback for unknown results (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25250\"\u003e#25250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject incompatible explicit variance in generic base classes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25327\"\u003e#25327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport multi-inference through type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25245\"\u003e#25245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25271\"\u003e#25271\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25172\"\u003e#25172\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/ibraheemdev\"\u003e\u003ccode\u003e@​ibraheemdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MatthewMckee4\"\u003e\u003ccode\u003e@​MatthewMckee4\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sqqueak\"\u003e\u003ccode\u003e@​sqqueak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lerebear\"\u003e\u003ccode\u003e@​lerebear\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\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/ty/commit/0205125174c135d6fc4014244dee374678b61c72\"\u003e\u003ccode\u003e0205125\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.39 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3516\"\u003e#3516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/ae8058d40e641b545bbad046c487e964206a2286\"\u003e\u003ccode\u003eae8058d\u003c/code\u003e\u003c/a\u003e Update maturin to v1.13.3 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3494\"\u003e#3494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/33b60f8ad0f2da648b867831548a4b8c7985647d\"\u003e\u003ccode\u003e33b60f8\u003c/code\u003e\u003c/a\u003e Update prek dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3495\"\u003e#3495\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/1d3efc1d68e36a8f982fa73b1f8c2a5ebc50fcde\"\u003e\u003ccode\u003e1d3efc1\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.38 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3492\"\u003e#3492\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/f5100ccde50ff577fa311add5232ae6074ed68f9\"\u003e\u003ccode\u003ef5100cc\u003c/code\u003e\u003c/a\u003e scripts/update_schemastore: use -C to allow re-running schema update on exist...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/f18aed6430c781ff3bc4fe41d9b5c2a7161657c4\"\u003e\u003ccode\u003ef18aed6\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.37 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3473\"\u003e#3473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/a63e55929645f8eeaa6f28117afda8d2ed39d1a4\"\u003e\u003ccode\u003ea63e559\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.36 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3463\"\u003e#3463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/94370d5b43c48d01720a9e65d8d8d5286b6697b1\"\u003e\u003ccode\u003e94370d5\u003c/code\u003e\u003c/a\u003e Update prek dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3449\"\u003e#3449\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/astral-sh/ty/compare/0.0.35...0.0.39\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.13 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.4.1\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-20.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix pre-push range after rebase (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2089\"\u003e#2089\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer extensions over loose filename tags (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2092\"\u003e#2092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip installs for hooks that will not run (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2103\"\u003e#2103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize meta hook file scans (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2106\"\u003e#2106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce run filtering allocations (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2090\"\u003e#2090\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/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall prek 0.4.1\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.4.1/prek-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://github.com/j178/prek/releases/download/v0.4.1/prek-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via Homebrew\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ebrew install prek\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload prek 0.4.1\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://github.com/j178/prek/releases/download/v0.4.1/prek-aarch64-apple-darwin.tar.gz\"\u003eprek-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://github.com/j178/prek/releases/download/v0.4.1/prek-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://github.com/j178/prek/releases/download/v0.4.1/prek-x86_64-apple-darwin.tar.gz\"\u003eprek-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://github.com/j178/prek/releases/download/v0.4.1/prek-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://github.com/j178/prek/releases/download/v0.4.1/prek-aarch64-pc-windows-msvc.zip\"\u003eprek-aarch64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/j178/prek/releases/download/v0.4.1/prek-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://github.com/j178/prek/releases/download/v0.4.1/prek-i686-pc-windows-msvc.zip\"\u003eprek-i686-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/j178/prek/releases/download/v0.4.1/prek-i686-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://github.com/j178/prek/releases/download/v0.4.1/prek-x86_64-pc-windows-msvc.zip\"\u003eprek-x86_64-pc-windows-msvc.zip\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex64 Windows\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/j178/prek/releases/download/v0.4.1/prek-x86_64-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://github.com/j178/prek/releases/download/v0.4.1/prek-aarch64-unknown-linux-gnu.tar.gz\"\u003eprek-aarch64-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eARM64 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://github.com/j178/prek/releases/download/v0.4.1/prek-aarch64-unknown-linux-gnu.tar.gz.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/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.4.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-20.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix pre-push range after rebase (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2089\"\u003e#2089\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer extensions over loose filename tags (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2092\"\u003e#2092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip installs for hooks that will not run (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2103\"\u003e#2103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize meta hook file scans (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2106\"\u003e#2106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce run filtering allocations (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2090\"\u003e#2090\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/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.4.0\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cp\u003eThese are narrow cleanup breaks in behavior that was either temporary or never worked correctly. Most users should not need to change anything.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGenerated hook scripts no longer preserve \u003ccode\u003e-q\u003c/code\u003e, \u003ccode\u003e-v\u003c/code\u003e, or \u003ccode\u003e--no-progress\u003c/code\u003e passed to \u003ccode\u003eprek install\u003c/code\u003e. This only affects users who expected those global flags to be baked into installed hooks. (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1966\"\u003e#1966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003elanguage_version\u003c/code\u003e no longer accepts direct executable paths. Use \u003ccode\u003elanguage_version: system\u003c/code\u003e for a system toolchain, or use a supported version request instead. This path form did not work reliably before, so existing working configs should be unaffected. (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1831\"\u003e#1831\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExpand tilde in \u003ccode\u003e--config\u003c/code\u003e, \u003ccode\u003e--cd\u003c/code\u003e, \u003ccode\u003e--log-file\u003c/code\u003e and \u003ccode\u003e--git-dir\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2063\"\u003e#2063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent auto-update cooldown downgrades (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2055\"\u003e#2055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse managed npm cache for node hooks (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2075\"\u003e#2075\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix npm config env overrides for node hooks (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2074\"\u003e#2074\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd cookbook page for enabling Git 2.54 config-based global hooks (\u003ca href=\"https://redirect.github.com/j178/prek/pull/2061\"\u003e#2061\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/j178\"\u003e\u003ccode\u003e@​j178\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/871b9edb65b7978c2c53d94f60a433cb9e120132\"\u003e\u003ccode\u003e871b9ed\u003c/code\u003e\u003c/a\u003e Bump version to 0.4.1 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2107\"\u003e#2107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/3c26faf5be0c9ad0e61309650479e063b8cb0037\"\u003e\u003ccode\u003e3c26faf\u003c/code\u003e\u003c/a\u003e Optimize meta hook file scans (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2106\"\u003e#2106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/7780f1149565ff430b86be1f688dce7f680c6760\"\u003e\u003ccode\u003e7780f11\u003c/code\u003e\u003c/a\u003e Clean up run hook installation flow (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2105\"\u003e#2105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/c5dc885bcbc3d293d6c20ffb43b7be970b55b60d\"\u003e\u003ccode\u003ec5dc885\u003c/code\u003e\u003c/a\u003e Refine hook install filtering (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2104\"\u003e#2104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/9db879e92760cfa3c6da748672237a1b1d81ce12\"\u003e\u003ccode\u003e9db879e\u003c/code\u003e\u003c/a\u003e Skip installs for hooks that will not run (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2103\"\u003e#2103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/2a0da57faddae03fd6d8985776ab2ec33d0b99e5\"\u003e\u003ccode\u003e2a0da57\u003c/code\u003e\u003c/a\u003e Simplify workspace file handling (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2102\"\u003e#2102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/33ca06054451602a7988b64ac6cf12b1cf5fddad\"\u003e\u003ccode\u003e33ca060\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2072\"\u003e#2072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/03f11c00b169b9beea59253fc5a0c7efe6dc9fa6\"\u003e\u003ccode\u003e03f11c0\u003c/code\u003e\u003c/a\u003e Update GitHub Actions (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2101\"\u003e#2101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/354f431c3c0420d5be83e6c59f3b644c907793e6\"\u003e\u003ccode\u003e354f431\u003c/code\u003e\u003c/a\u003e Update dependency uv to v0.11.13 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2094\"\u003e#2094\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/4a41828a33efaccccaba76e96942314ac3309e75\"\u003e\u003ccode\u003e4a41828\u003c/code\u003e\u003c/a\u003e Update Rust crate quick-xml to v0.39.4 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/2098\"\u003e#2098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/j178/prek/compare/v0.3.13...v0.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zizmor` from 1.24.1 to 1.25.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zizmorcore/zizmor/releases\"\u003ezizmor's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.25.2\u003c/h2\u003e\n\u003ch2\u003eBug Fixes 🐛\u003ca href=\"https://docs.zizmor.sh/release-notes/#bug-fixes\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where the \u003ca href=\"https://docs.zizmor.sh/audits/#unpinned-tools\"\u003eunpinned-tools\u003c/a\u003e audit would incorrectly flag the \u003ca href=\"https://github.com/aquasecurity/trivy-action\"\u003eaquasecurity/trivy-action\u003c/a\u003e action as installing an unpinned tool version, rather than \u003ca href=\"https://github.com/aquasecurity/setup-trivy\"\u003eaquasecurity/setup-trivy\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/2018\"\u003e#2018\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.25.1\u003c/h2\u003e\n\u003ch2\u003eBug Fixes 🐛\u003ca href=\"https://docs.zizmor.sh/release-notes/#bug-fixes\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a bug where the \u003ca href=\"https://docs.zizmor.sh/audits/#cache-poisoning\"\u003ecache-poisoning\u003c/a\u003e audit would fail to consider release events as exempt from cache usage findings when filtered by a tag condition (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/2004\"\u003e#2004\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a typo when suggesting --fix flags for findings (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/2010\"\u003e#2010\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/0xdea\"\u003e\u003ccode\u003e@​0xdea\u003c/code\u003e\u003c/a\u003e for implementing this fix!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a typo in \u003ca href=\"https://docs.zizmor.sh/audits/#unpinned-tools\"\u003eunpinned-tools\u003c/a\u003e annotations (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/2008\"\u003e#2008\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/martincostello\"\u003e\u003ccode\u003e@​martincostello\u003c/code\u003e\u003c/a\u003e for implementing this fix!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a bug where the \u003ca href=\"https://docs.zizmor.sh/audits/#github-app\"\u003egithub-app\u003c/a\u003e audit would incorrectly flag some safe uses of \u003ca href=\"https://github.com/actions/create-github-app-token\"\u003eactions/create-github-app-token\u003c/a\u003e as unsafe (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/2011\"\u003e#2011\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.25.0\u003c/h2\u003e\n\u003ch2\u003eNew Features 🌈\u003ca href=\"https://docs.zizmor.sh/release-notes/#new-features\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor's finding severities can now be remapped on a per-audit basis. See \u003ca href=\"https://docs.zizmor.sh/configuration/#rules-id-remap\"\u003ethe configuration\u003c/a\u003e for details (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1913\"\u003e#1913\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/Proximyst\"\u003e\u003ccode\u003e@​Proximyst\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNew audit: \u003ca href=\"https://docs.zizmor.sh/audits/#github-app\"\u003egithub-app\u003c/a\u003e detects dangerous usages of GitHub App installation tokens (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1926\"\u003e#1926\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNew audit: [unpinned-tools] detects actions that install tools without pinning to a specific version (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1820\"\u003e#1820\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor now accepts the --no-ignores flag to disable all ignore comments and configurations when reporting findings (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1935\"\u003e#1935\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor's LSP now honors the --persona flag on the CLI (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1943\"\u003e#1943\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor is now aware of Docker-based action definitions, in addition to the pre-existing support for \u0026quot;composite\u0026quot; actions (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1965\"\u003e#1965\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements\u003ca href=\"https://docs.zizmor.sh/release-notes/#enhancements\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend gh issue edit --add-label / gh pr edit --add-label as a replacement for \u003ca href=\"https://github.com/actions-ecosystem/action-add-labels\"\u003eactions-ecosystem/action-add-labels\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend gh issue edit --remove-label / gh pr edit --remove-label as a replacement for \u003ca href=\"https://github.com/actions-ecosystem/action-remove-labels\"\u003eactions-ecosystem/action-remove-labels\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend jq as a replacement for \u003ca href=\"https://github.com/sergeysova/jq-action\"\u003esergeysova/jq-action\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend git add, git commit, and git push as a replacement for \u003ca href=\"https://github.com/stefanzweifel/git-auto-commit-action\"\u003estefanzweifel/git-auto-commit-action\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend git add, git commit, and git push as a replacement for \u003ca href=\"https://github.com/EndBug/add-and-commit\"\u003eEndBug/add-and-commit\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tibdex/github-app-token\"\u003etibdex/github-app-token\u003c/a\u003e is now recognized as an archived action by \u003ca href=...\n\n_Description has been truncated_","html_url":"https://github.com/fastapi/sqlmodel/pull/1989","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/fastapi%2Fsqlmodel/issues/1989","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1989/packages"}},{"old_version":"2.8.1","new_version":"2.9.1","update_type":"minor","path":null,"pr_created_at":"2026-05-04T00:10:37.000Z","version_change":"2.8.1 → 2.9.1","issue":{"uuid":"4373355082","node_id":"PR_kwDOFvSVkM7X1-_B","number":334,"state":"closed","title":"Bump the python group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-25T00:11:04.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-04T00:10:37.000Z","updated_at":"2026-05-25T00:11:06.000Z","time_to_close":1814427,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":27,"packages":[{"name":"pillow","old_version":"12.1.1","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"redis","old_version":"7.3.0","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"django","old_version":"5.2.12","new_version":"5.2.13","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.15.0","new_version":"65.16.1","repository_url":"https://github.com/sponsors/pennersr"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-django","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"psycopg","old_version":"3.3.3","new_version":"3.3.4","repository_url":"https://github.com/psycopg/psycopg"},{"name":"django-anymail","old_version":"14.0","new_version":"15.0","repository_url":"https://github.com/anymail/django-anymail"},{"name":"werkzeug","old_version":"3.1.6","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"django-stubs","old_version":"5.2.9","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.15.6","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-debug-toolbar","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-coverage-plugin","old_version":"3.2.0","new_version":"3.2.2","repository_url":"https://github.com/coveragepy/django_coverage_plugin"},{"name":"rust-just","old_version":"1.47.0","new_version":"1.50.0","repository_url":"https://github.com/gnpaone/rust-just"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.1` | `12.2.0` |\n| [redis](https://github.com/redis/redis-py) | `7.3.0` | `7.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.3.1` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.8.1` | `2.9.1` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260503` |\n| [django](https://github.com/django/django) | `5.2.12` | `5.2.13` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.15.0` | `65.16.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-instrumentation-django](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.3.3` | `3.3.4` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `14.0` | `15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.6` | `3.1.8` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `5.2.9` | `6.0.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.6` | `0.15.12` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `6.2.0` | `6.3.0` |\n| [django-coverage-plugin](https://github.com/coveragepy/django_coverage_plugin) | `3.2.0` | `3.2.2` |\n| [rust-just](https://github.com/gnpaone/rust-just) | `1.47.0` | `1.50.0` |\n\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 `redis` from 7.3.0 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/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\u003eSee full diff in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.3.0...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release fixes a compatibility issue with Python 3.15:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/pull/218\"\u003eredis/hiredis-py#218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/3cb8f069006f7138620b065fba973ccc490bde3d\"\u003e\u003ccode\u003e3cb8f06\u003c/code\u003e\u003c/a\u003e Version 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/2836c965d28606fecfc8989059edb36a0c4fb320\"\u003e\u003ccode\u003e2836c96\u003c/code\u003e\u003c/a\u003e MNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10151\"\u003ecelery/celery#10151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove on_after_finalize signal documentation by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10155\"\u003ecelery/celery#10155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-commutative example to clarify partial arg ordering in canvas docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10157\"\u003ecelery/celery#10157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant test_isa_mapping test (fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10077\"\u003e#10077\u003c/a\u003e) by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10103\"\u003ecelery/celery#10103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10162\"\u003ecelery/celery#10162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated args from redis get_connection call by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10036\"\u003ecelery/celery#10036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/celery/celery/issues/6912\"\u003e#6912\u003c/a\u003e rpc backend reconnection error by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10179\"\u003ecelery/celery#10179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) by \u003ca href=\"https://github.com/drichardson\"\u003e\u003ccode\u003e@​drichardson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10165\"\u003ecelery/celery#10165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit by \u003ca href=\"https://github.com/tsangwailam\"\u003e\u003ccode\u003e@​tsangwailam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10181\"\u003ecelery/celery#10181\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix O(K²) message bloat in a chain of chords by \u003ca href=\"https://github.com/Borzik\"\u003e\u003ccode\u003e@​Borzik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10171\"\u003ecelery/celery#10171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mock connection interfaces to prevent \u003ccode\u003eTypeError\u003c/code\u003e during exception handling by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10178\"\u003ecelery/celery#10178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks by \u003ca href=\"https://github.com/aurangzaib048\"\u003e\u003ccode\u003e@​aurangzaib048\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10159\"\u003ecelery/celery#10159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003ereconnect_on_error\u003c/code\u003e to \u003ccode\u003eBaseResultConsumer\u003c/code\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10189\"\u003ecelery/celery#10189\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epep 649 by \u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10187\"\u003ecelery/celery#10187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix#9722 friendly status errors for CLI by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10190\"\u003ecelery/celery#10190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify after_return behavior for retried tasks by \u003ca href=\"https://github.com/KianAnbarestani\"\u003e\u003ccode\u003e@​KianAnbarestani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10192\"\u003ecelery/celery#10192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd compression header to message protocol docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10156\"\u003ecelery/celery#10156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated word in bootsteps comment by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10153\"\u003ecelery/celery#10153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove outdated autoreloader section from extending docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10154\"\u003ecelery/celery#10154\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/celery/celery/blob/v5.6.3/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.3\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-03-26\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix Django worker recursion bug + defensive checks for pool_cls.__module__ ([#10048](https://github.com/celery/celery/issues/10048))\n- Docs: Update user_preload_options example to use click. ([#10056](https://github.com/celery/celery/issues/10056))\n- Fix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo ([#10060](https://github.com/celery/celery/issues/10060))\n- Fix broken images on PyPI page ([#10066](https://github.com/celery/celery/issues/10066))\n- Remove broken reference. ([#10071](https://github.com/celery/celery/issues/10071))\n- Removed --dist=loadscope from smoke tests ([#10073](https://github.com/celery/celery/issues/10073))\n- Docs: Clarify task_retry signal args may be None ([#10076](https://github.com/celery/celery/issues/10076))\n- Update example for Django ([#10081](https://github.com/celery/celery/issues/10081))\n- Make tests compatible with pymongo \u0026gt;= 4.16 ([#10074](https://github.com/celery/celery/issues/10074))\n- fix: source install of cassandra-driver ([#10105](https://github.com/celery/celery/issues/10105))\n- fix: register task cross-reference role in Sphinx extension ([#10100](https://github.com/celery/celery/issues/10100))\n- fix: avoid cycle detection in native delayed delivery ([#10095](https://github.com/celery/celery/issues/10095))\n- fix(asynpool): avoid AttributeError when proc lacks _sentinel_poll ([#10086](https://github.com/celery/celery/issues/10086))\n- fix dusk_astronomical horizon sign (+18 -\u0026gt; -18) ([#10121](https://github.com/celery/celery/issues/10121))\n- Fix/10106 onupdate col use lambda func ([#10108](https://github.com/celery/celery/issues/10108))\n- Fix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 ([#10083](https://github.com/celery/celery/issues/10083)) ([#10123](https://github.com/celery/celery/issues/10123))\n- Fix 10109 db backend connection health ([#10124](https://github.com/celery/celery/issues/10124))\n- Database Backend filter unsupport sql engine arguments with nullpool [#7355](https://github.com/celery/celery/issues/7355) ([#10134](https://github.com/celery/celery/issues/10134))\n- fix(beat): correct argument order in Service.__reduce__ ([#10137](https://github.com/celery/celery/issues/10137))\n- ci: declare explicit read-only token permissions in workflow jobs ([#10139](https://github.com/celery/celery/issues/10139))\n- chore: 'boto3to' to 'boto3 to' ([#10133](https://github.com/celery/celery/issues/10133))\n- Database Backend: Add missing index on date_done (Fixes [#10097](https://github.com/celery/celery/issues/10097)) ([#10098](https://github.com/celery/celery/issues/10098))\n- docs: fix typo in CONTRIBUTING.rst ([#10141](https://github.com/celery/celery/issues/10141))\n- Refer to Flower / Prometheus for monitoring ([#10140](https://github.com/celery/celery/issues/10140))\n- docs: remove duplicated words in broker and routing docs ([#10146](https://github.com/celery/celery/issues/10146))\n- docs: fix stale version reference and grammar in README ([#10145](https://github.com/celery/celery/issues/10145))\n- docs: fix wording in Celery 5.3 worker pool notes ([#10149](https://github.com/celery/celery/issues/10149))\n- docs: fix duplicated wording in 3.1 changelog entry ([#10152](https://github.com/celery/celery/issues/10152))\n- docs: fix changelog typo in context manager wording ([#10144](https://github.com/celery/celery/issues/10144))\n- Fix/10096 worker fails to reconnect after redis failover ([#10151](https://github.com/celery/celery/issues/10151))\n- Improve on_after_finalize signal documentation ([#10155](https://github.com/celery/celery/issues/10155))\n- Add non-commutative example to clarify partial arg ordering in canvas docs ([#10157](https://github.com/celery/celery/issues/10157))\n- Remove redundant test_isa_mapping test (fixes [#10077](https://github.com/celery/celery/issues/10077)) ([#10103](https://github.com/celery/celery/issues/10103))\n- Upgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg ([#10162](https://github.com/celery/celery/issues/10162))\n- Remove deprecated args from redis get_connection call ([#10036](https://github.com/celery/celery/issues/10036))\n- Fix [#6912](https://github.com/celery/celery/issues/6912) rpc backend reconnection error ([#10179](https://github.com/celery/celery/issues/10179))\n- Fix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) ([#10165](https://github.com/celery/celery/issues/10165))\n- docs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit ([#10181](https://github.com/celery/celery/issues/10181))\n- Fix O(K²) message bloat in a chain of chords ([#10171](https://github.com/celery/celery/issues/10171))\n- Fix mock connection interfaces to prevent `TypeError` during exception handling ([#10178](https://github.com/celery/celery/issues/10178))\n- fix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks ([#10159](https://github.com/celery/celery/issues/10159))\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/3f4d8d795ad128bd7430cc5dc174a802cded425c\"\u003e\u003ccode\u003e3f4d8d7\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.3 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10221\"\u003e#10221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a989e8cf8876274b1f0612abffeeb2e9995ed321\"\u003e\u003ccode\u003ea989e8c\u003c/code\u003e\u003c/a\u003e fix: clear the timer while catch the exception (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10218\"\u003e#10218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d06de5f047620b0ea2bdbdb3c0c56137b79ae9a1\"\u003e\u003ccode\u003ed06de5f\u003c/code\u003e\u003c/a\u003e Chore(deps): Bump nick-fields/retry from 3 to 4 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10213\"\u003e#10213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/c3c19c31dc3e21f16d4d85a8ba8401a9223ace09\"\u003e\u003ccode\u003ec3c19c3\u003c/code\u003e\u003c/a\u003e Fix: prioritize request ignore_result over task definition (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10184\"\u003e#10184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d23be53f6f3600d48df35a797c63eb1c7d4d4b97\"\u003e\u003ccode\u003ed23be53\u003c/code\u003e\u003c/a\u003e Remove outdated autoreloader section from extending docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10154\"\u003e#10154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ada2da7475a5fa9f9ad079149a5d6864634abc28\"\u003e\u003ccode\u003eada2da7\u003c/code\u003e\u003c/a\u003e docs: fix duplicated word in bootsteps comment\\n\\nSigned-off-by: Rohan Santho...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f45f62beb3b16ae960944f8c97de13ccf15f2d0a\"\u003e\u003ccode\u003ef45f62b\u003c/code\u003e\u003c/a\u003e Add compression header to message protocol docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10156\"\u003e#10156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9a270925546ed9d0ca0303fb5006edc86b705fd9\"\u003e\u003ccode\u003e9a27092\u003c/code\u003e\u003c/a\u003e docs: clarify after_return behavior for retried tasks (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10192\"\u003e#10192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6ee6230cd80ef6c3e7482e1f4cd970fbb0629b23\"\u003e\u003ccode\u003e6ee6230\u003c/code\u003e\u003c/a\u003e Fix#9722 friendly status errors for CLI (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10190\"\u003e#10190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a9a2d4cecaf0e58c401ad6f68f022afa19770ac2\"\u003e\u003ccode\u003ea9a2d4c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10186\"\u003e#10186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.6.2...v5.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.8.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.8.1...v2.9.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.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 `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 `django-allauth` from 65.15.0 to 65.16.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\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 `opentelemetry-api` from 1.40.0 to 1.41.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/v1.41.1/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.41.1/0.62b1 (2026-04-24)\u003c/h2\u003e\n\u003ch2\u003eVersion 1.41.0/0.62b0 (2026-04-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ehost\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].host\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5002\"\u003e#5002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003econtainer\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].container\u003c/code\u003e, using entry point loading of the \u003ccode\u003eopentelemetry-resource-detector-containerid\u003c/code\u003e contrib package\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5004\"\u003e#5004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_tracer_provider\u003c/code\u003e/\u003ccode\u003econfigure_tracer_provider\u003c/code\u003e to declarative file configuration, enabling TracerProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4985\"\u003e#4985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnabled the flake8-tidy-import plugins rules for the ruff linter. These rules throw warnings for relative imports in the modules.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5019\"\u003e#5019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Fix \u003ccode\u003eAttributeError\u003c/code\u003e in \u003ccode\u003eExplicitBucketHistogramAggregation\u003c/code\u003e when applied to non-Histogram instruments without explicit boundaries\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5034\"\u003e#5034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eBatchLogRecordProcessor\u003c/code\u003e default \u003ccode\u003eschedule_delay_millis\u003c/code\u003e from 5000ms to 1000ms to comply with the OTel specification. Note: logs may be exported 5x more frequently by default (e.g. for users who don't explicitly set the \u003ccode\u003eOTEL_BLRP_SCHEDULE_DELAY\u003c/code\u003e env var).\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4998\"\u003e#4998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eprocess\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].process\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5001\"\u003e#5001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add shared \u003ccode\u003e_parse_headers\u003c/code\u003e helper for declarative config OTLP exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Replace a broad exception in attribute cleaning tests to satisfy pylint in the \u003ccode\u003elint-opentelemetry-api\u003c/code\u003e CI job\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_meter_provider\u003c/code\u003e/\u003ccode\u003econfigure_meter_provider\u003c/code\u003e to declarative file configuration, enabling MeterProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4987\"\u003e#4987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_resource\u003c/code\u003e and \u003ccode\u003ecreate_propagator\u003c/code\u003e/\u003ccode\u003econfigure_propagator\u003c/code\u003e to declarative file configuration, enabling Resource and propagator instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4979\"\u003e#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Map Python \u003ccode\u003eCRITICAL\u003c/code\u003e log level to OTel \u003ccode\u003eFATAL\u003c/code\u003e severity text per the specification\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4984\"\u003e#4984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add file configuration support with YAML/JSON loading, environment variable substitution, and schema validation against the vendored OTel config JSON schema\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4898\"\u003e#4898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix intermittent CI failures in \u003ccode\u003egetting-started\u003c/code\u003e and \u003ccode\u003etracecontext\u003c/code\u003e jobs caused by GitHub git CDN SHA propagation lag by installing contrib packages from the already-checked-out local copy instead of a second git clone\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4958\"\u003e#4958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: fix type annotations on \u003ccode\u003eMetricReader\u003c/code\u003e and related types\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4938/\"\u003e#4938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement log creation metric\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4935\"\u003e#4935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement metric reader metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4970\"\u003e#4970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement processor metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5012\"\u003e#5012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: upgrade vendored OTel configuration schema from v1.0.0-rc.3 to v1.0.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4965\"\u003e#4965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimprove check-links ci job\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4978\"\u003e#4978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve some Pyright type errors in Span/ReadableSpan and utility stubs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4973\"\u003e#4973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-prometheus\u003c/code\u003e: Fix metric name prefix\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4895\"\u003e#4895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add deepcopy support for \u003ccode\u003eBoundedAttributes\u003c/code\u003e and \u003ccode\u003eBoundedList\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4934\"\u003e#4934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-proto-json\u003c/code\u003e, \u003ccode\u003eopentelemetry-codegen-json\u003c/code\u003e: Implement custom protoc plugin to generate OTLP JSON class definitions\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/760e0248edbd01ae817941c1dfa61c07241b0727\"\u003e\u003ccode\u003e760e024\u003c/code\u003e\u003c/a\u003e Prepare release 1.41.1/0.62b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5138\"\u003e#5138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/openteleme...\n\n_Description has been truncated_","html_url":"https://github.com/mfosterw/cookiestocracy/pull/334","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfosterw%2Fcookiestocracy/issues/334","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/334/packages"}},{"old_version":"2.6.1","new_version":"2.9.1","update_type":"minor","path":null,"pr_created_at":"2026-05-01T08:38:21.000Z","version_change":"2.6.1 → 2.9.1","issue":{"uuid":"4363577762","node_id":"PR_kwDOR-QXh87XYLTG","number":6,"state":"open","title":"chore(python): Bump the documentation group across 1 directory with 5 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-01T08:38:21.000Z","updated_at":"2026-05-01T08:38:22.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(python): Bump","group_name":"documentation","update_count":5,"packages":[{"name":"mkdocs-material","old_version":"9.6.1","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-macros-plugin","old_version":"1.3.7","new_version":"1.5.0","repository_url":"https://github.com/fralau/mkdocs_macros_plugin"},{"name":"markdown-exec","old_version":"1.10.0","new_version":"1.11.0","repository_url":"https://github.com/pawamoy/markdown-exec"},{"name":"pygithub","old_version":"2.6.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [numba](https://github.com/numba/numba), [mkdocs-material](https://github.com/squidfunk/mkdocs-material), [mkdocs-macros-plugin](https://github.com/fralau/mkdocs_macros_plugin), [markdown-exec](https://github.com/pawamoy/markdown-exec) and [pygithub](https://github.com/pygithub/pygithub) to permit the latest version.\nUpdates `numba` to 0.60.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numba/numba/releases\"\u003enumba's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.60.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release.\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/numba/numba/commit/53e976f1b0c6683933fa0a93738362914bffc1cd\"\u003e\u003ccode\u003e53e976f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9620\"\u003e#9620\u003c/a\u003e from esc/cherry-pick/rc-bugfixes-for-0.60.0-final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/6cee88e883bc1a6443e59578dd3e103e042cfbaf\"\u003e\u003ccode\u003e6cee88e\u003c/code\u003e\u003c/a\u003e add remaining PRs that were cherry-picked\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/38beff8db1a32664b7bcddbed93e90c5815eb9c1\"\u003e\u003ccode\u003e38beff8\u003c/code\u003e\u003c/a\u003e update change log\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/5e6270af58f70b99ec873c2b5913815f3c76c4cd\"\u003e\u003ccode\u003e5e6270a\u003c/code\u003e\u003c/a\u003e update version support table with release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/ff2e49561b1ac471526737e2c79210c639ee3782\"\u003e\u003ccode\u003eff2e495\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9603\"\u003e#9603\u003c/a\u003e from sklam/fix/avx512nocona\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/48faddf209ee25c9b445126bad3a826a39ee1fe5\"\u003e\u003ccode\u003e48faddf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9602\"\u003e#9602\u003c/a\u003e from sklam/fix/np2compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/7d1976f3cc6b5f2e7e789832d2d3eb4d42405cb1\"\u003e\u003ccode\u003e7d1976f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9586\"\u003e#9586\u003c/a\u003e from sklam/fix/bug9581\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/b3dc3dffac3b815a5841f7f794b5644c919e86c6\"\u003e\u003ccode\u003eb3dc3df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9596\"\u003e#9596\u003c/a\u003e from kc611/import-issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/056012a050c42db6597ba08527df15f6af717a94\"\u003e\u003ccode\u003e056012a\u003c/code\u003e\u003c/a\u003e Added tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/08bfe0799a12e3f0ad7d09f09493f10e03691016\"\u003e\u003ccode\u003e08bfe07\u003c/code\u003e\u003c/a\u003e Added inline_closurecall as an import during registry loading\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numba/numba/compare/0.54.0...0.60.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.6.1 to 9.7.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.7.6\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.5\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLimited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning (clarify relation with MkDocs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.4\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHardened social cards plugin by switching to sandboxed environment (recommended by \u003ca href=\"https://github.com/caveeroo\"\u003e\u003ccode\u003e@​caveeroo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning\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/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.7.6 (2026-03-19)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.5 (2026-03-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLimited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning (clarify relation with MkDocs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.4 (2026-03-03)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHardened social cards plugin by switching to sandboxed environment\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.3 (2026-02-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8567\"\u003e#8567\u003c/a\u003e: Print MkDocs 2.0 incompatibility warning to stderr\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.2 (2026-02-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to 'mkdocs build' about impending MkDocs 2.0 incompatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.1 (2025-12-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.0 (2025-11-11)\u003c/p\u003e\n\u003cp\u003e⚠️ Material for MkDocs is now in maintenance mode\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features.\nGoing forward, the Material for MkDocs team focuses on Zensical, a next-gen\nstatic site generator built from first principles. We will provide critical\nbug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003eRead the full announcement on our blog:\n\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003ehttps://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the\nInsiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003eNote on deprecated plugins: The projects and typeset plugins are included in\nthis release, but must be considered deprecated. Both plugins proved\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6c52ed6289b171a153875491f059a94819ec3e10\"\u003e\u003ccode\u003e6c52ed6\u003c/code\u003e\u003c/a\u003e Prepare 9.7.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/51d9b76636431814df924bcda27485b16023978b\"\u003e\u003ccode\u003e51d9b76\u003c/code\u003e\u003c/a\u003e Automatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6f9a48b4048650341a654d9757da57fc1e3e323d\"\u003e\u003ccode\u003e6f9a48b\u003c/code\u003e\u003c/a\u003e Updated links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/00b9933e5821fd852700268767d4fd53ae1ce1cb\"\u003e\u003ccode\u003e00b9933\u003c/code\u003e\u003c/a\u003e Prepare 9.7.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/37683d12c9cd62309aa917237741ee0886709b7c\"\u003e\u003ccode\u003e37683d1\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/199e31598055d5d6ea538618804c7558f5d81047\"\u003e\u003ccode\u003e199e315\u003c/code\u003e\u003c/a\u003e Updated warning message to clarify relation to MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/10258334eb13545e6d708cf121c3867bfbdb6017\"\u003e\u003ccode\u003e1025833\u003c/code\u003e\u003c/a\u003e Limited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/1532f523f6c650c9d6fd16229ee8bec0759b4151\"\u003e\u003ccode\u003e1532f52\u003c/code\u003e\u003c/a\u003e Added update log to blog post\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/d0c8b2862a966f5f268d4a4c35bb4fcfccebb9b1\"\u003e\u003ccode\u003ed0c8b28\u003c/code\u003e\u003c/a\u003e Updated dependencies to fix vulnerabilities\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/71d48699a0e2bef231e796818c4dc20b230a5f45\"\u003e\u003ccode\u003e71d4869\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.6.1...9.7.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-macros-plugin` from 1.3.7 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/blob/master/CHANGELOG.md\"\u003emkdocs-macros-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0, 2025-11-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: For each push, testing on github for versions Python 3.8 to 3.12\u003c/li\u003e\n\u003cli\u003eFixed: bug in import of packages when not in source dir (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1, 2025-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: support for j2_extensions paramater in config file (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: missing dependency declaration on \u003ccode\u003erequests\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0, 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved: auto-install of missing pluglet (meaningful error message \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: error with yaml dumps (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: detection of Jinja2, to allow title rendering (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall improvements to documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/0536f4da1dc643e1fa1f0cc90e71512ada67dc04\"\u003e\u003ccode\u003e0536f4d\u003c/code\u003e\u003c/a\u003e Fix type hint for compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/d9a6bc3aac5b12b86f9e2be7af18e1e9178287f6\"\u003e\u003ccode\u003ed9a6bc3\u003c/code\u003e\u003c/a\u003e Require mkdocs-test\u0026gt;=0.6.0 (compatibility with Python 3.8 and 3.9)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/bcaa72db2820d60822ffba15e87c75669abc7b92\"\u003e\u003ccode\u003ebcaa72d\u003c/code\u003e\u003c/a\u003e Make last minute corrections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/356fc2a5b55d1897a2f2c47856d52b10cff4611c\"\u003e\u003ccode\u003e356fc2a\u003c/code\u003e\u003c/a\u003e Prepare for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/aaf16bdcb9dfcb9c6ea9b6567ea4af7f8c178185\"\u003e\u003ccode\u003eaaf16bd\u003c/code\u003e\u003c/a\u003e Limit testing to 3.10 up (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/ba5356c0c263355556aa82dad0fbfde3cce4bc4d\"\u003e\u003ccode\u003eba5356c\u003c/code\u003e\u003c/a\u003e Use proper exit for pytest if Python \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/6c796600bc0886696ce9b76b84354d7e2bc1b6fa\"\u003e\u003ccode\u003e6c79660\u003c/code\u003e\u003c/a\u003e Skip test_modules.py if Python version \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cec7440d46589b303d741a5e2df0a240c25b9bdb\"\u003e\u003ccode\u003ecec7440\u003c/code\u003e\u003c/a\u003e Test installation of d2 in a cross-platform way (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/492759c5ab3d05f7c55ec62ffdf9573b715ac6ed\"\u003e\u003ccode\u003e492759c\u003c/code\u003e\u003c/a\u003e Update with changes from local repo (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cc5416834a07ffd2ba1fe3d917a701ac6e9c98ad\"\u003e\u003ccode\u003ecc54168\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of github.com:fralau/mkdocs_macros_plugin\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/compare/v1.3.7...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown-exec` from 1.10.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pawamoy/markdown-exec/releases\"\u003emarkdown-exec's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.11.0\"\u003e1.11.0\u003c/a\u003e - 2025-06-28\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.4...1.11.0\"\u003eCompare with 1.10.4\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to set height of Pyodide/Ace editors (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003ec64a2ef\u003c/a\u003e by Jayant Pranjal). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/41\"\u003eIssue-41\u003c/a\u003e, Co-authored-by: Jayant \u003ca href=\"mailto:jayant@Jayants-MacBook-Air.local\"\u003ejayant@Jayants-MacBook-Air.local\u003c/a\u003e, Co-authored-by: Timothée Mazzucotelli \u003ca href=\"mailto:dev@pawamoy.fr\"\u003edev@pawamoy.fr\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.4\"\u003e1.10.4\u003c/a\u003e - 2025-06-27\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.3...1.10.4\"\u003eCompare with 1.10.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't fail when used as Markdown extension and MkDocs is not installed (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e7722250\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://github.com/pawamoy/markdown-exec/discussions/91\"\u003eIssue-91\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.3\"\u003e1.10.3\u003c/a\u003e - 2025-03-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.2...1.10.3\"\u003eCompare with 1.10.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlso escape strings printed directly to the output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003ea668aeb\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003ee0b52b4\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.2\"\u003e1.10.2\u003c/a\u003e - 2025-03-18\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.1...1.10.2\"\u003eCompare with 1.10.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape Pyodide output, improve error handling (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/ec83f48db29708b03e8d2487ccb0d5ee0889a464\"\u003eec83f48\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync API and docs (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/1245ed96b8c5d430cc949fcfa2b9f2ef5be78f65\"\u003e1245ed9\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eMove code under internal folder (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/b132e78d2a9ebc48edd7b388e00b161eb0a048b6\"\u003eb132e78\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.1\"\u003e1.10.1\u003c/a\u003e - 2025-03-11\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.10.1\"\u003eCompare with 1.10.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd lower bound to pygments-ansi-color extra (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a8e17c9cd1bf9ba8ab5008a83c77a0b1208a1b25\"\u003ea8e17c9\u003c/a\u003e by Timothée Mazzucotelli).\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/pawamoy/markdown-exec/blob/main/CHANGELOG.md\"\u003emarkdown-exec's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.11.0\"\u003e1.11.0\u003c/a\u003e - 2025-06-28\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.4...1.11.0\"\u003eCompare with 1.10.4\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to set height of Pyodide/Ace editors (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003ec64a2ef\u003c/a\u003e by Jayant Pranjal). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/41\"\u003eIssue-41\u003c/a\u003e, Co-authored-by: Jayant \u003ca href=\"mailto:jayant@Jayants-MacBook-Air.local\"\u003ejayant@Jayants-MacBook-Air.local\u003c/a\u003e, Co-authored-by: Timothée Mazzucotelli \u003ca href=\"mailto:dev@pawamoy.fr\"\u003edev@pawamoy.fr\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.4\"\u003e1.10.4\u003c/a\u003e - 2025-06-27\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.3...1.10.4\"\u003eCompare with 1.10.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't fail when used as Markdown extension and MkDocs is not installed (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e7722250\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://github.com/pawamoy/markdown-exec/discussions/91\"\u003eIssue-91\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.3\"\u003e1.10.3\u003c/a\u003e - 2025-03-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.2...1.10.3\"\u003eCompare with 1.10.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlso escape strings printed directly to the output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003ea668aeb\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003ee0b52b4\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.2\"\u003e1.10.2\u003c/a\u003e - 2025-03-18\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.1...1.10.2\"\u003eCompare with 1.10.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eDeprecations\u003c/h3\u003e\n\u003cp\u003eExpose public API under top-level module \u003ccode\u003emarkdown_exec\u003c/code\u003e. Importing from submodules is now deprecated.\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape Pyodide output, improve error handling (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/ec83f48db29708b03e8d2487ccb0d5ee0889a464\"\u003eec83f48\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync API and docs (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/1245ed96b8c5d430cc949fcfa2b9f2ef5be78f65\"\u003e1245ed9\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eMove code under internal folder (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/b132e78d2a9ebc48edd7b388e00b161eb0a048b6\"\u003eb132e78\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.1\"\u003e1.10.1\u003c/a\u003e - 2025-03-11\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.10.1\"\u003eCompare with 1.10.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd lower bound to pygments-ansi-color extra (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a8e17c9cd1bf9ba8ab5008a83c77a0b1208a1b25\"\u003ea8e17c9\u003c/a\u003e by Timothée Mazzucotelli).\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/pawamoy/markdown-exec/commit/7d0e201a585d522225f326d3a9b57390f7253edb\"\u003e\u003ccode\u003e7d0e201\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003e\u003ccode\u003ec64a2ef\u003c/code\u003e\u003c/a\u003e feat: Add option to set height of Pyodide/Ace editors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/d64fe2e9292386d00e127188e564dbf6364fc4a9\"\u003e\u003ccode\u003ed64fe2e\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.10.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e\u003ccode\u003e7722250\u003c/code\u003e\u003c/a\u003e fix: Don't fail when used as Markdown extension and MkDocs is not installed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/449b4f1a8c73e1949d6ce906c4eeb5a50931f502\"\u003e\u003ccode\u003e449b4f1\u003c/code\u003e\u003c/a\u003e ci: Ignore Ruff warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/2aced2261e68543f0d3d2c27ea9c29c2121ecf59\"\u003e\u003ccode\u003e2aced22\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/9df9d5e38540478574a91929773f7b5dc4471a9a\"\u003e\u003ccode\u003e9df9d5e\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.10.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003e\u003ccode\u003ea668aeb\u003c/code\u003e\u003c/a\u003e fix: Also escape strings printed directly to the output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003e\u003ccode\u003ee0b52b4\u003c/code\u003e\u003c/a\u003e fix: Don't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/2aa817151013b5674cb6e9232b39e2be45851729\"\u003e\u003ccode\u003e2aa8171\u003c/code\u003e\u003c/a\u003e docs: Add deprecation note to changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.6.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.6.1...v2.9.1\"\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/Rappsilber-Laboratory/polars-free-threaded/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rappsilber-Laboratory%2Fpolars-free-threaded/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"}},{"old_version":"2.6.1","new_version":"2.9.1","update_type":"minor","path":null,"pr_created_at":"2026-05-01T07:31:39.000Z","version_change":"2.6.1 → 2.9.1","issue":{"uuid":"4363381558","node_id":"PR_kwDORjVtmM7XXkFD","number":7,"state":"open","title":"chore(python): Bump the documentation group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["python","internal"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-01T07:31:39.000Z","updated_at":"2026-05-01T07:31:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(python): Bump","group_name":"documentation","update_count":5,"packages":[{"name":"mkdocs-material","old_version":"9.6.20","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-macros-plugin","old_version":"1.3.7","new_version":"1.5.0","repository_url":"https://github.com/fralau/mkdocs_macros_plugin"},{"name":"markdown-exec","old_version":"1.10.0","new_version":"1.11.0","repository_url":"https://github.com/pawamoy/markdown-exec"},{"name":"pygithub","old_version":"2.6.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [numba](https://github.com/numba/numba), [mkdocs-material](https://github.com/squidfunk/mkdocs-material), [mkdocs-macros-plugin](https://github.com/fralau/mkdocs_macros_plugin), [markdown-exec](https://github.com/pawamoy/markdown-exec) and [pygithub](https://github.com/pygithub/pygithub) to permit the latest version.\nUpdates `numba` to 0.60.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numba/numba/releases\"\u003enumba's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.60.0\u003c/h2\u003e\n\u003cp\u003eMajor Numba release.\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/numba/numba/commit/53e976f1b0c6683933fa0a93738362914bffc1cd\"\u003e\u003ccode\u003e53e976f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9620\"\u003e#9620\u003c/a\u003e from esc/cherry-pick/rc-bugfixes-for-0.60.0-final\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/6cee88e883bc1a6443e59578dd3e103e042cfbaf\"\u003e\u003ccode\u003e6cee88e\u003c/code\u003e\u003c/a\u003e add remaining PRs that were cherry-picked\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/38beff8db1a32664b7bcddbed93e90c5815eb9c1\"\u003e\u003ccode\u003e38beff8\u003c/code\u003e\u003c/a\u003e update change log\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/5e6270af58f70b99ec873c2b5913815f3c76c4cd\"\u003e\u003ccode\u003e5e6270a\u003c/code\u003e\u003c/a\u003e update version support table with release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/ff2e49561b1ac471526737e2c79210c639ee3782\"\u003e\u003ccode\u003eff2e495\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9603\"\u003e#9603\u003c/a\u003e from sklam/fix/avx512nocona\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/48faddf209ee25c9b445126bad3a826a39ee1fe5\"\u003e\u003ccode\u003e48faddf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9602\"\u003e#9602\u003c/a\u003e from sklam/fix/np2compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/7d1976f3cc6b5f2e7e789832d2d3eb4d42405cb1\"\u003e\u003ccode\u003e7d1976f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9586\"\u003e#9586\u003c/a\u003e from sklam/fix/bug9581\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/b3dc3dffac3b815a5841f7f794b5644c919e86c6\"\u003e\u003ccode\u003eb3dc3df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/numba/numba/issues/9596\"\u003e#9596\u003c/a\u003e from kc611/import-issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/056012a050c42db6597ba08527df15f6af717a94\"\u003e\u003ccode\u003e056012a\u003c/code\u003e\u003c/a\u003e Added tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/numba/numba/commit/08bfe0799a12e3f0ad7d09f09493f10e03691016\"\u003e\u003ccode\u003e08bfe07\u003c/code\u003e\u003c/a\u003e Added inline_closurecall as an import during registry loading\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/numba/numba/compare/0.54.0...0.60.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.6.20 to 9.7.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.7.6\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.5\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLimited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning (clarify relation with MkDocs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003emkdocs-material-9.7.4\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eHardened social cards plugin by switching to sandboxed environment (recommended by \u003ca href=\"https://github.com/caveeroo\"\u003e\u003ccode\u003e@​caveeroo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning\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/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.7.6 (2026-03-19)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.5 (2026-03-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLimited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning (clarify relation with MkDocs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.4 (2026-03-03)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHardened social cards plugin by switching to sandboxed environment\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.3 (2026-02-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8567\"\u003e#8567\u003c/a\u003e: Print MkDocs 2.0 incompatibility warning to stderr\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.2 (2026-02-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to 'mkdocs build' about impending MkDocs 2.0 incompatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.1 (2025-12-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.0 (2025-11-11)\u003c/p\u003e\n\u003cp\u003e⚠️ Material for MkDocs is now in maintenance mode\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features.\nGoing forward, the Material for MkDocs team focuses on Zensical, a next-gen\nstatic site generator built from first principles. We will provide critical\nbug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003eRead the full announcement on our blog:\n\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003ehttps://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the\nInsiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003eNote on deprecated plugins: The projects and typeset plugins are included in\nthis release, but must be considered deprecated. Both plugins proved\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6c52ed6289b171a153875491f059a94819ec3e10\"\u003e\u003ccode\u003e6c52ed6\u003c/code\u003e\u003c/a\u003e Prepare 9.7.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/51d9b76636431814df924bcda27485b16023978b\"\u003e\u003ccode\u003e51d9b76\u003c/code\u003e\u003c/a\u003e Automatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6f9a48b4048650341a654d9757da57fc1e3e323d\"\u003e\u003ccode\u003e6f9a48b\u003c/code\u003e\u003c/a\u003e Updated links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/00b9933e5821fd852700268767d4fd53ae1ce1cb\"\u003e\u003ccode\u003e00b9933\u003c/code\u003e\u003c/a\u003e Prepare 9.7.5 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/37683d12c9cd62309aa917237741ee0886709b7c\"\u003e\u003ccode\u003e37683d1\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/199e31598055d5d6ea538618804c7558f5d81047\"\u003e\u003ccode\u003e199e315\u003c/code\u003e\u003c/a\u003e Updated warning message to clarify relation to MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/10258334eb13545e6d708cf121c3867bfbdb6017\"\u003e\u003ccode\u003e1025833\u003c/code\u003e\u003c/a\u003e Limited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/1532f523f6c650c9d6fd16229ee8bec0759b4151\"\u003e\u003ccode\u003e1532f52\u003c/code\u003e\u003c/a\u003e Added update log to blog post\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/d0c8b2862a966f5f268d4a4c35bb4fcfccebb9b1\"\u003e\u003ccode\u003ed0c8b28\u003c/code\u003e\u003c/a\u003e Updated dependencies to fix vulnerabilities\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/71d48699a0e2bef231e796818c4dc20b230a5f45\"\u003e\u003ccode\u003e71d4869\u003c/code\u003e\u003c/a\u003e Updated blog post on MkDocs 2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.6.20...9.7.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-macros-plugin` from 1.3.7 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/blob/master/CHANGELOG.md\"\u003emkdocs-macros-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0, 2025-11-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: For each push, testing on github for versions Python 3.8 to 3.12\u003c/li\u003e\n\u003cli\u003eFixed: bug in import of packages when not in source dir (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1, 2025-10-18\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded: support for j2_extensions paramater in config file (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: missing dependency declaration on \u003ccode\u003erequests\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0, 2025-09-21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved: auto-install of missing pluglet (meaningful error message \u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: error with yaml dumps (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/258\"\u003e#258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed: detection of Jinja2, to allow title rendering (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall improvements to documentation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/0536f4da1dc643e1fa1f0cc90e71512ada67dc04\"\u003e\u003ccode\u003e0536f4d\u003c/code\u003e\u003c/a\u003e Fix type hint for compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/d9a6bc3aac5b12b86f9e2be7af18e1e9178287f6\"\u003e\u003ccode\u003ed9a6bc3\u003c/code\u003e\u003c/a\u003e Require mkdocs-test\u0026gt;=0.6.0 (compatibility with Python 3.8 and 3.9)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/bcaa72db2820d60822ffba15e87c75669abc7b92\"\u003e\u003ccode\u003ebcaa72d\u003c/code\u003e\u003c/a\u003e Make last minute corrections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/356fc2a5b55d1897a2f2c47856d52b10cff4611c\"\u003e\u003ccode\u003e356fc2a\u003c/code\u003e\u003c/a\u003e Prepare for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/aaf16bdcb9dfcb9c6ea9b6567ea4af7f8c178185\"\u003e\u003ccode\u003eaaf16bd\u003c/code\u003e\u003c/a\u003e Limit testing to 3.10 up (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/ba5356c0c263355556aa82dad0fbfde3cce4bc4d\"\u003e\u003ccode\u003eba5356c\u003c/code\u003e\u003c/a\u003e Use proper exit for pytest if Python \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/6c796600bc0886696ce9b76b84354d7e2bc1b6fa\"\u003e\u003ccode\u003e6c79660\u003c/code\u003e\u003c/a\u003e Skip test_modules.py if Python version \u0026lt; 3.10 (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cec7440d46589b303d741a5e2df0a240c25b9bdb\"\u003e\u003ccode\u003ecec7440\u003c/code\u003e\u003c/a\u003e Test installation of d2 in a cross-platform way (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/279\"\u003e#279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/492759c5ab3d05f7c55ec62ffdf9573b715ac6ed\"\u003e\u003ccode\u003e492759c\u003c/code\u003e\u003c/a\u003e Update with changes from local repo (\u003ca href=\"https://redirect.github.com/fralau/mkdocs_macros_plugin/issues/278\"\u003e#278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fralau/mkdocs-macros-plugin/commit/cc5416834a07ffd2ba1fe3d917a701ac6e9c98ad\"\u003e\u003ccode\u003ecc54168\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of github.com:fralau/mkdocs_macros_plugin\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fralau/mkdocs_macros_plugin/compare/v1.3.7...v1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown-exec` from 1.10.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pawamoy/markdown-exec/releases\"\u003emarkdown-exec's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.11.0\"\u003e1.11.0\u003c/a\u003e - 2025-06-28\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.4...1.11.0\"\u003eCompare with 1.10.4\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to set height of Pyodide/Ace editors (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003ec64a2ef\u003c/a\u003e by Jayant Pranjal). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/41\"\u003eIssue-41\u003c/a\u003e, Co-authored-by: Jayant \u003ca href=\"mailto:jayant@Jayants-MacBook-Air.local\"\u003ejayant@Jayants-MacBook-Air.local\u003c/a\u003e, Co-authored-by: Timothée Mazzucotelli \u003ca href=\"mailto:dev@pawamoy.fr\"\u003edev@pawamoy.fr\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.4\"\u003e1.10.4\u003c/a\u003e - 2025-06-27\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.3...1.10.4\"\u003eCompare with 1.10.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't fail when used as Markdown extension and MkDocs is not installed (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e7722250\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://github.com/pawamoy/markdown-exec/discussions/91\"\u003eIssue-91\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.3\"\u003e1.10.3\u003c/a\u003e - 2025-03-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.2...1.10.3\"\u003eCompare with 1.10.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlso escape strings printed directly to the output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003ea668aeb\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003ee0b52b4\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.2\"\u003e1.10.2\u003c/a\u003e - 2025-03-18\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.1...1.10.2\"\u003eCompare with 1.10.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape Pyodide output, improve error handling (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/ec83f48db29708b03e8d2487ccb0d5ee0889a464\"\u003eec83f48\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync API and docs (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/1245ed96b8c5d430cc949fcfa2b9f2ef5be78f65\"\u003e1245ed9\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eMove code under internal folder (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/b132e78d2a9ebc48edd7b388e00b161eb0a048b6\"\u003eb132e78\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.1\"\u003e1.10.1\u003c/a\u003e - 2025-03-11\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.10.1\"\u003eCompare with 1.10.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd lower bound to pygments-ansi-color extra (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a8e17c9cd1bf9ba8ab5008a83c77a0b1208a1b25\"\u003ea8e17c9\u003c/a\u003e by Timothée Mazzucotelli).\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/pawamoy/markdown-exec/blob/main/CHANGELOG.md\"\u003emarkdown-exec's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.11.0\"\u003e1.11.0\u003c/a\u003e - 2025-06-28\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.4...1.11.0\"\u003eCompare with 1.10.4\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd option to set height of Pyodide/Ace editors (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003ec64a2ef\u003c/a\u003e by Jayant Pranjal). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/41\"\u003eIssue-41\u003c/a\u003e, Co-authored-by: Jayant \u003ca href=\"mailto:jayant@Jayants-MacBook-Air.local\"\u003ejayant@Jayants-MacBook-Air.local\u003c/a\u003e, Co-authored-by: Timothée Mazzucotelli \u003ca href=\"mailto:dev@pawamoy.fr\"\u003edev@pawamoy.fr\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.4\"\u003e1.10.4\u003c/a\u003e - 2025-06-27\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.3...1.10.4\"\u003eCompare with 1.10.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't fail when used as Markdown extension and MkDocs is not installed (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e7722250\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://github.com/pawamoy/markdown-exec/discussions/91\"\u003eIssue-91\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.3\"\u003e1.10.3\u003c/a\u003e - 2025-03-24\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.2...1.10.3\"\u003eCompare with 1.10.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlso escape strings printed directly to the output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003ea668aeb\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003ee0b52b4\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.2\"\u003e1.10.2\u003c/a\u003e - 2025-03-18\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.1...1.10.2\"\u003eCompare with 1.10.1\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eDeprecations\u003c/h3\u003e\n\u003cp\u003eExpose public API under top-level module \u003ccode\u003emarkdown_exec\u003c/code\u003e. Importing from submodules is now deprecated.\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape Pyodide output, improve error handling (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/ec83f48db29708b03e8d2487ccb0d5ee0889a464\"\u003eec83f48\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/pawamoy/markdown-exec/issues/87\"\u003eIssue-87\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSync API and docs (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/1245ed96b8c5d430cc949fcfa2b9f2ef5be78f65\"\u003e1245ed9\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003cli\u003eMove code under internal folder (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/b132e78d2a9ebc48edd7b388e00b161eb0a048b6\"\u003eb132e78\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/releases/tag/1.10.1\"\u003e1.10.1\u003c/a\u003e - 2025-03-11\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.10.1\"\u003eCompare with 1.10.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd lower bound to pygments-ansi-color extra (\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a8e17c9cd1bf9ba8ab5008a83c77a0b1208a1b25\"\u003ea8e17c9\u003c/a\u003e by Timothée Mazzucotelli).\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/pawamoy/markdown-exec/commit/7d0e201a585d522225f326d3a9b57390f7253edb\"\u003e\u003ccode\u003e7d0e201\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/c64a2efd8cb7a7a691039e866dab5839f8ef8bfe\"\u003e\u003ccode\u003ec64a2ef\u003c/code\u003e\u003c/a\u003e feat: Add option to set height of Pyodide/Ace editors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/d64fe2e9292386d00e127188e564dbf6364fc4a9\"\u003e\u003ccode\u003ed64fe2e\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.10.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/7722250931f44d2328af69cd20143035d3ba404e\"\u003e\u003ccode\u003e7722250\u003c/code\u003e\u003c/a\u003e fix: Don't fail when used as Markdown extension and MkDocs is not installed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/449b4f1a8c73e1949d6ce906c4eeb5a50931f502\"\u003e\u003ccode\u003e449b4f1\u003c/code\u003e\u003c/a\u003e ci: Ignore Ruff warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/2aced2261e68543f0d3d2c27ea9c29c2121ecf59\"\u003e\u003ccode\u003e2aced22\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/9df9d5e38540478574a91929773f7b5dc4471a9a\"\u003e\u003ccode\u003e9df9d5e\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.10.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/a668aeb9106ed3861553acd50fd38e716eaacd75\"\u003e\u003ccode\u003ea668aeb\u003c/code\u003e\u003c/a\u003e fix: Also escape strings printed directly to the output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/e0b52b44e0355d8f524cbd4c47d32e8a9d51e4c5\"\u003e\u003ccode\u003ee0b52b4\u003c/code\u003e\u003c/a\u003e fix: Don't forget to clear \u0026quot;Initializing\u0026quot; in Pyodide output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pawamoy/markdown-exec/commit/2aa817151013b5674cb6e9232b39e2be45851729\"\u003e\u003ccode\u003e2aa8171\u003c/code\u003e\u003c/a\u003e docs: Add deprecation note to changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pawamoy/markdown-exec/compare/1.10.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.6.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.6.1...v2.9.1\"\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/GoWithMe-AI/polars/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoWithMe-AI%2Fpolars/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"}},{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":null,"pr_created_at":"2026-05-01T05:31:56.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"4363011697","node_id":"PR_kwDOEvf2G87XWZEg","number":1322,"state":"open","title":"⬆️ Bump pygithub from 2.9.0 to 2.9.1","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-05-01T05:31:56.000Z","updated_at":"2026-05-01T05:37:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"⬆️ Bump","packages":[{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.9.0 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\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=pygithub\u0026package-manager=pip\u0026previous-version=2.9.0\u0026new-version=2.9.1)](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/duck-dynasty/duckbot/pull/1322","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/duck-dynasty%2Fduckbot/issues/1322","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1322/packages"}},{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":null,"pr_created_at":"2026-05-01T01:55:38.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"4362366814","node_id":"PR_kwDORf90e87XUVuB","number":78,"state":"open","title":":dependabot: uv(deps): Bump the minor-and-patch group with 5 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-01T01:55:38.000Z","updated_at":"2026-05-01T01:55:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":":dependabot: uv(deps): Bump","group_name":"minor-and-patch","update_count":5,"packages":[{"name":"authlib","old_version":"1.6.9","new_version":"1.6.11","repository_url":"https://github.com/authlib/authlib"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"sentry-sdk","old_version":"2.57.0","new_version":"2.58.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"ruff","old_version":"0.15.10","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"zizmor","old_version":"1.23.1","new_version":"1.24.1","repository_url":"https://github.com/zizmorcore/zizmor"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [authlib](https://github.com/authlib/authlib) | `1.6.9` | `1.6.11` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.9.1` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.57.0` | `2.58.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.10` | `0.15.11` |\n| [zizmor](https://github.com/zizmorcore/zizmor) | `1.23.1` | `1.24.1` |\n\nUpdates `authlib` from 1.6.9 to 1.6.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/releases\"\u003eauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.6.11\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.10...v1.6.11\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.10...v1.6.11\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CSRF issue with starlette client\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.6.10\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.9...v1.6.10\"\u003ehttps://github.com/authlib/authlib/compare/v1.6.9...v1.6.10\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix redirecting to unvalidated \u003ccode\u003eredirect_uri\u003c/code\u003e on \u003ccode\u003eUnsupportedResponseTypeError\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/authlib/authlib/blob/v1.6.11/docs/changelog.rst\"\u003eauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.6.11\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eReleased on Apr 16, 2026\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CSRF vulnerability in the Starlette OAuth client when a \u003ccode\u003ecache\u003c/code\u003e is\nconfigured.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.6.10\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eReleased on Apr 13, 2026\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix redirecting to unvalidated \u003ccode\u003eredirect_uri\u003c/code\u003e on \u003ccode\u003eUnsupportedResponseTypeError\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/0dc0e5b4dc84f155319518a3732113af6fa47525\"\u003e\u003ccode\u003e0dc0e5b\u003c/code\u003e\u003c/a\u003e chore: bump to 1.6.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/aa7b8e46e00d0622658666476782042ac00153a5\"\u003e\u003ccode\u003eaa7b8e4\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/401a7709c3fe43bce1b2105d16a475b688faa788\"\u003e\u003ccode\u003e401a770\u003c/code\u003e\u003c/a\u003e fix: CSRF issue with starlette client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/ef09aebbba4439dedb22bd15777d1b3458b6f0ab\"\u003e\u003ccode\u003eef09aeb\u003c/code\u003e\u003c/a\u003e chore: release 1.6.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/authlib/authlib/commit/3be08468201a7766a93012ce149ea12822cab096\"\u003e\u003ccode\u003e3be0846\u003c/code\u003e\u003c/a\u003e fix: redirecting to unvalidated redirect_uri on UnsupportedResponseTypeError\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/authlib/authlib/compare/v1.6.9...v1.6.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.9.0 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.57.0 to 2.58.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.58.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Redact base64 data URLs in image_url content blocks by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5953\"\u003e#5953\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(integrations) Instrument pyreqwest tracing by \u003ca href=\"https://github.com/servusdei2018\"\u003e\u003ccode\u003e@​servusdei2018\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5682\"\u003e#5682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Add async callbacks by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5969\"\u003e#5969\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCapture exceptions for \u003ccode\u003estream()\u003c/code\u003e calls by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5950\"\u003e#5950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop setting transaction status when child span fails by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in .create() patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5716\"\u003e#5716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdapt import for new library versions by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5984\"\u003e#5984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse first-class hooks when available by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5947\"\u003e#5947\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(huggingface_hub) Stop setting transaction status when a child span fails by \u003ca href=\"https://github.com/Zenithatic\"\u003e\u003ccode\u003e@​Zenithatic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5952\"\u003e#5952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Avoid double span exits when streaming by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5933\"\u003e#5933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi) Respect HTTP_X_FORWARDED_PROTO in request.url construction by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5963\"\u003e#5963\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eLitellm\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in rate-limit test by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5975\"\u003e#5975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in embedding tests by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5970\"\u003e#5970\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in nonstreaming \u003ccode\u003ecompletion()\u003c/code\u003e tests by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5937\"\u003e#5937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dead attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5985\"\u003e#5985\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Remove \u003ccode\u003egen_ai.tool.type\u003c/code\u003e span attribute by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5964\"\u003e#5964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Separate sync and async .create() patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5715\"\u003e#5715\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Split token counting by API for easier deprecation by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5930\"\u003e#5930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai-agents) Remove error attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5986\"\u003e#5986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(opentelemetry) Ignore mypy error by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5927\"\u003e#5927\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (04/13) by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5983\"\u003e#5983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix license metadata in setup.py by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5934\"\u003e#5934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate validate-pr workflow by \u003ca href=\"https://github.com/stephanie-anderson\"\u003e\u003ccode\u003e@​stephanie-anderson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5931\"\u003e#5931\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eNone\u003c/code\u003e span context in the span processor and pin tokenizers version for anthropic tests on Python 3.8 by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5967\"\u003e#5967\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/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.58.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Redact base64 data URLs in image_url content blocks by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5953\"\u003e#5953\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(integrations) Instrument pyreqwest tracing by \u003ca href=\"https://github.com/servusdei2018\"\u003e\u003ccode\u003e@​servusdei2018\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5682\"\u003e#5682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Add async callbacks by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5969\"\u003e#5969\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCapture exceptions for \u003ccode\u003estream()\u003c/code\u003e calls by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5950\"\u003e#5950\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop setting transaction status when child span fails by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5717\"\u003e#5717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in .create() patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5716\"\u003e#5716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdapt import for new library versions by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5984\"\u003e#5984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse first-class hooks when available by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5947\"\u003e#5947\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(huggingface_hub) Stop setting transaction status when a child span fails by \u003ca href=\"https://github.com/Zenithatic\"\u003e\u003ccode\u003e@​Zenithatic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5952\"\u003e#5952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Avoid double span exits when streaming by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5933\"\u003e#5933\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi) Respect HTTP_X_FORWARDED_PROTO in request.url construction by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5963\"\u003e#5963\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eLitellm\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in rate-limit test by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5975\"\u003e#5975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in embedding tests by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5970\"\u003e#5970\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in nonstreaming \u003ccode\u003ecompletion()\u003c/code\u003e tests by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5937\"\u003e#5937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove dead attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5985\"\u003e#5985\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Remove \u003ccode\u003egen_ai.tool.type\u003c/code\u003e span attribute by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5964\"\u003e#5964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Separate sync and async .create() patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5715\"\u003e#5715\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Split token counting by API for easier deprecation by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5930\"\u003e#5930\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai-agents) Remove error attributes by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5986\"\u003e#5986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(opentelemetry) Ignore mypy error by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5927\"\u003e#5927\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (04/13) by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5983\"\u003e#5983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix license metadata in setup.py by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5934\"\u003e#5934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate validate-pr workflow by \u003ca href=\"https://github.com/stephanie-anderson\"\u003e\u003ccode\u003e@​stephanie-anderson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5931\"\u003e#5931\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eNone\u003c/code\u003e span context in the span processor and pin tokenizers version for anthropic tests on Python 3.8 by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5967\"\u003e#5967\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/getsentry/sentry-python/commit/ce445d96977ec083b97495c917aa0c3ce453689d\"\u003e\u003ccode\u003ece445d9\u003c/code\u003e\u003c/a\u003e release: 2.58.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/c0c0e9cfc8536f0d9ba22925e4bea17034138cd0\"\u003e\u003ccode\u003ec0c0e9c\u003c/code\u003e\u003c/a\u003e feat(litellm): Add async callbacks (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5969\"\u003e#5969\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/ea74b63881d2cf1d71130a8b6ef4dfff4e4cd337\"\u003e\u003ccode\u003eea74b63\u003c/code\u003e\u003c/a\u003e test(litellm): Replace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in rate-limit test (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5975\"\u003e#5975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/06ed1bca2f9302055ba43dc058f5afcc731b8d79\"\u003e\u003ccode\u003e06ed1bc\u003c/code\u003e\u003c/a\u003e test(litellm): Replace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in embedding tests (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5970\"\u003e#5970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/66ef2e6976a1ae86e97aca08cbc806f9e579f324\"\u003e\u003ccode\u003e66ef2e6\u003c/code\u003e\u003c/a\u003e test(litellm): Replace mocks with \u003ccode\u003ehttpx\u003c/code\u003e types in nonstreaming `completion()...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/96ebbf67d91146ebb30be6e0898a637ea6c2c697\"\u003e\u003ccode\u003e96ebbf6\u003c/code\u003e\u003c/a\u003e fix(litellm): Avoid double span exits when streaming (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5933\"\u003e#5933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7e22b5dc3447a5bee71574a5c22934e5aa8a7642\"\u003e\u003ccode\u003e7e22b5d\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 8.0.0 to 9.0.0 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5979\"\u003e#5979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/35151a90a98affa0d72f7cb8b314a8fb54ac8b51\"\u003e\u003ccode\u003e35151a9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5980\"\u003e#5980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/d1c5b53096e76353e2aa3ffdd8a845f38bb04bb6\"\u003e\u003ccode\u003ed1c5b53\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/create-github-app-token from 3.0.0 to 3.1.1 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5981\"\u003e#5981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e255aafa913955eed43333aa204f1476d9dc1ff2\"\u003e\u003ccode\u003ee255aaf\u003c/code\u003e\u003c/a\u003e build(deps): bump getsentry/testing-ai-sdk-integrations from 6b1f51ec8af03e19...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.57.0...2.58.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.10 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\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/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.10...0.15.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `zizmor` from 1.23.1 to 1.24.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zizmorcore/zizmor/releases\"\u003ezizmor's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.24.1\u003c/h2\u003e\n\u003ch2\u003eBug Fixes 🐛\u003ca href=\"https://docs.zizmor.sh/release-notes/#bug-fixes\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where the \u003ca href=\"https://docs.zizmor.sh/audits/#ref-version-mismatch\"\u003eref-version-mismatch\u003c/a\u003e audit would incorrectly flag some version comments as not containing an appropriate version (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1900\"\u003e#1900\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.24.0\u003c/h2\u003e\n\u003ch2\u003eNew Features 🌈\u003ca href=\"https://docs.zizmor.sh/release-notes/#new-features\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ezizmor now allows users to audit from stdin, by passing zizmor - (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1611\"\u003e#1611\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements 🌱\u003ca href=\"https://docs.zizmor.sh/release-notes/#enhancements\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#use-trusted-publishing\"\u003euse-trusted-publishing\u003c/a\u003e audit now detects bun publish and bunx npm publish patterns (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1737\"\u003e#1737\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor's CLI help and usage output now uses a custom color scheme for improved readability (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1747\"\u003e#1747\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#secrets-outside-env\"\u003esecrets-outside-env\u003c/a\u003e audit is now configurable with an allowlist of secret names that should not be flagged, even when referenced outside of an environment (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1759\"\u003e#1759\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/rmuir\"\u003e\u003ccode\u003e@​rmuir\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#dependabot-cooldown\"\u003edependabot-cooldown\u003c/a\u003e audit now emits a pedantic finding whenever it encounters a cooldown used with a multi-ecosystem-group, as the two do not interact well (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1780\"\u003e#1780\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend gh release upload as a replacement for \u003ca href=\"https://github.com/svenstaro/upload-release-action\"\u003esvenstaro/upload-release-action\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1801\"\u003e#1801\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend gh issue create as a replacement for \u003ca href=\"https://github.com/dacbd/create-issue-action\"\u003edacbd/create-issue-action\u003c/a\u003e in \u003ca href=\"https://docs.zizmor.sh/audits/#superfluous-actions\"\u003esuperfluous-actions\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1873\"\u003e#1873\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#obfuscation\"\u003eobfuscation\u003c/a\u003e audit now emits a finding for with: ${{ expr }} clauses cannot be analyzed (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor --help is now rendered with option groups for improved readability (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1831\"\u003e#1831\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/deckstose\"\u003e\u003ccode\u003e@​deckstose\u003c/code\u003e\u003c/a\u003e for implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor's SARIF output now uses codeflows instead of related locations, improving its rendering behavior on GitHub Advanced Security (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#ref-version-mismatch\"\u003eref-version-mismatch\u003c/a\u003e audit now uses a more useful audit description for its findings (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#unpinned-images\"\u003eunpinned-images\u003c/a\u003e audit now produces more precise findings for image references that are computed through expressions (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1756\"\u003e#1756\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/miketheman\"\u003e\u003ccode\u003e@​miketheman\u003c/code\u003e\u003c/a\u003e for implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ca href=\"https://docs.zizmor.sh/audits/#ref-version-mismatch\"\u003eref-version-mismatch\u003c/a\u003e audit now detects missing version comments as well (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1849\"\u003e#1849\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes 🐛\u003ca href=\"https://docs.zizmor.sh/release-notes/#bug-fixes\"\u003e🔗\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where the \u003ca href=\"https://docs.zizmor.sh/audits/#concurrency-limits\"\u003econcurrency-limits\u003c/a\u003e audit reported findings at the job level instead of the workflow level (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1627\"\u003e#1627\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/zizmorcore/zizmor/blob/main/docs/release-notes.md\"\u003ezizmor's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.24.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where the [ref-version-mismatch] audit would incorrectly flag\nsome version comments as not containing an appropriate version (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1900\"\u003e#1900\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.24.0\u003c/h2\u003e\n\u003ch3\u003eNew Features 🌈\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ezizmor\u003c/code\u003e now allows users to audit from stdin, by passing \u003ccode\u003ezizmor -\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1611\"\u003e#1611\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements 🌱\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe [use-trusted-publishing] audit now detects \u003ccode\u003ebun publish\u003c/code\u003e and \u003ccode\u003ebunx npm publish\u003c/code\u003e\npatterns (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1737\"\u003e#1737\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/shaanmajid\"\u003e\u003ccode\u003e@​shaanmajid\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ezizmor\u003c/code\u003e's CLI help and usage output now uses a custom color scheme for\nimproved readability (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1747\"\u003e#1747\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe [secrets-outside-env] audit is now configurable with an allowlist of\nsecret names that should not be flagged, even when referenced outside of\nan environment (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1759\"\u003e#1759\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/rmuir\"\u003e\u003ccode\u003e@​rmuir\u003c/code\u003e\u003c/a\u003e for proposing and implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe [dependabot-cooldown] audit now emits a pedantic finding whenever\nit encounters a cooldown used with a multi-ecosystem-group, as the two\ndo not interact well (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1780\"\u003e#1780\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend \u003ccode\u003egh release upload\u003c/code\u003e as a replacement for \u003ccode\u003e@​svenstaro/upload-release-action\u003c/code\u003e in\n[superfluous-actions] (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1801\"\u003e#1801\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRecommend \u003ccode\u003egh issue create\u003c/code\u003e as a replacement for \u003ccode\u003e@​dacbd/create-issue-action\u003c/code\u003e in\n[superfluous-actions] (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1873\"\u003e#1873\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe [obfuscation] audit now emits a finding for \u003ccode\u003ewith: ${{ expr }}\u003c/code\u003e\nclauses cannot be analyzed (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1772\"\u003e#1772\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ezizmor --help\u003c/code\u003e is now rendered with option groups for improved readability (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1831\"\u003e#1831\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eMany thanks to \u003ca href=\"https://github.com/deckstose\"\u003e\u003ccode\u003e@​deckstose\u003c/code\u003e\u003c/a\u003e for implementing this improvement!\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ezizmor's SARIF output now uses codeflows instead of related locations,\nimproving its rendering behavior on GitHub Advanced Security (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1843\"\u003e#1843\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe [ref-version-mismatch] audit now uses a more useful audit description\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/zizmorcore/zizmor/commit/2eaf42bcccfed62978cee0905902acbc294d5123\"\u003e\u003ccode\u003e2eaf42b\u003c/code\u003e\u003c/a\u003e ref-version-mismatch: handle version comments without v prefix (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1900\"\u003e#1900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/a3b72b8f26946fd057c016d5ec83b77cc4cfdad2\"\u003e\u003ccode\u003ea3b72b8\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1897\"\u003e#1897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/d5aba605f4267b96e34775de183955ff0a3197ad\"\u003e\u003ccode\u003ed5aba60\u003c/code\u003e\u003c/a\u003e zizmor v1.24.0 (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1890\"\u003e#1890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/1e762ac3c0354d68ddcac0ccc0af6879e8b38aa6\"\u003e\u003ccode\u003e1e762ac\u003c/code\u003e\u003c/a\u003e zizmor v1.24.0-rc3 (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1889\"\u003e#1889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/b79c9dc84c096d6c7becabd9581c61c9347bf4f7\"\u003e\u003ccode\u003eb79c9dc\u003c/code\u003e\u003c/a\u003e Fix release CI (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1888\"\u003e#1888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/eb113ad5c5f8c25c79dd0b4705d420096a35ba2d\"\u003e\u003ccode\u003eeb113ad\u003c/code\u003e\u003c/a\u003e Unify crate versions and publishing (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1887\"\u003e#1887\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/91bcb96244214bea0d62982fba3bc825f9604af9\"\u003e\u003ccode\u003e91bcb96\u003c/code\u003e\u003c/a\u003e Use the GitHub client's host correctly in two more places (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1881\"\u003e#1881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/3ed8316a1ce22a3f9c887c1021992ca19d31dce4\"\u003e\u003ccode\u003e3ed8316\u003c/code\u003e\u003c/a\u003e chore: use \u003ccode\u003etracing\u003c/code\u003e for printing the welcome message (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1886\"\u003e#1886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/484acedf381a7553f663309b44def3b7953fb4d8\"\u003e\u003ccode\u003e484aced\u003c/code\u003e\u003c/a\u003e feat(ref-version-mismatch): detect missing version comments on SHA-pinned act...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zizmorcore/zizmor/commit/7ee374f5db0b69b96ef4f7ba89d0c33c8a93a7ba\"\u003e\u003ccode\u003e7ee374f\u003c/code\u003e\u003c/a\u003e KATs for GitHub Actions expressions (\u003ca href=\"https://redirect.github.com/zizmorcore/zizmor/issues/1857\"\u003e#1857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zizmorcore/zizmor/compare/v1.23.1...v1.24.1\"\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/ministryofjustice/modernisation-platform-ui/pull/78","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ministryofjustice%2Fmodernisation-platform-ui/issues/78","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/78/packages"}},{"old_version":"\u003e=2.1.1","new_version":"\u003e=2.9.1","update_type":"minor","path":null,"pr_created_at":"2026-04-27T23:36:36.000Z","version_change":"\u003e=2.1.1 → \u003e=2.9.1","issue":{"uuid":"4339498308","node_id":"PR_kwDOQfFqPM7WJZ1s","number":17,"state":"open","title":"deps: update pygithub requirement from \u003e=2.1.1 to \u003e=2.9.1","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-27T23:36:36.000Z","updated_at":"2026-04-27T23:37:10.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: update","packages":[{"name":"pygithub","old_version":"\u003e=2.1.1","new_version":"\u003e=2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [pygithub](https://github.com/pygithub/pygithub) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.1.1...v2.9.1\"\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 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\n\n\u003c!-- This is an auto-generated description by cubic. --\u003e\n---\n## Summary by cubic\nBump `PyGithub` to \u003e=2.9.1 to pick up recent fixes and improvements, including lazy object support and a fix for fetching releases by tag. No code changes required.\n\n\u003csup\u003eWritten for commit 69c3d1b6883525e6970b92ae59f3c578732f36ee. Summary will update on new commits. \u003ca href=\"https://cubic.dev/pr/Joker5514/workflow-failure-copilot/pull/17?utm_source=github\"\u003eReview in cubic\u003c/a\u003e\u003c/sup\u003e\n\n\u003c!-- End of auto-generated description by cubic. --\u003e\n\n","html_url":"https://github.com/Joker5514/workflow-failure-copilot/pull/17","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Joker5514%2Fworkflow-failure-copilot/issues/17","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/17/packages"}},{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":null,"pr_created_at":"2026-04-27T07:07:04.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"4333770140","node_id":"PR_kwDOOuks_87V27QJ","number":209,"state":"closed","title":"chore: bump the patch-updates group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["ignore-for-release","dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-04T07:20:48.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-27T07:07:04.000Z","updated_at":"2026-05-04T07:20:59.000Z","time_to_close":605624,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"patch-updates","update_count":8,"packages":[{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"mypy","old_version":"1.20.0","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.15.9","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"commitizen","old_version":"4.13.9","new_version":"4.13.10","repository_url":"https://github.com/commitizen-tools/commitizen"},{"name":"click","old_version":"8.3.2","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"gitpython","old_version":"3.1.46","new_version":"3.1.47","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"fastmcp","old_version":"3.2.0","new_version":"3.2.4","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-updates group with 8 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [mypy](https://github.com/python/mypy) | `1.20.0` | `1.20.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.9` | `0.15.12` |\n| [commitizen](https://github.com/commitizen-tools/commitizen) | `4.13.9` | `4.13.10` |\n| [click](https://github.com/pallets/click) | `8.3.2` | `8.3.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.9.1` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.46` | `3.1.47` |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.2.0` | `3.2.4` |\n\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 `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\u003ch3\u003eMypy 1.20.2\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse WAL with SQLite cache and fix close (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21154\"\u003e21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdjust SQLite journal mode (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21217\"\u003e21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCorrectly aggregate narrowing information on parent expressions (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21206\"\u003e21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression related to generic callables (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21208\"\u003e21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression by avoiding widening types in some contexts (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21242\"\u003e21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing in non-strict optional mode (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21282\"\u003e21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix match statement semantics for \u0026quot;or\u0026quot; pattern (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21156\"\u003e21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emypyc: Fix issue with module dunder attributes (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21275\"\u003e21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInitial support for Python 3.15.0a8 (Marc Mueller, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21255\"\u003e21255\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eAaron Wieczorek\u003c/li\u003e\n\u003cli\u003eAdam Turner\u003c/li\u003e\n\u003cli\u003eAli Hamdan\u003c/li\u003e\n\u003cli\u003easce\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003eBrent Westbrook\u003c/li\u003e\n\u003cli\u003eBrian Schubert\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChris Burroughs\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eColin Watson\u003c/li\u003e\n\u003cli\u003eDonghoon Nam\u003c/li\u003e\n\u003cli\u003eE. M. Bray\u003c/li\u003e\n\u003cli\u003eEmma Smith\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eGeorge Ogden\u003c/li\u003e\n\u003cli\u003egetzze\u003c/li\u003e\n\u003cli\u003egrayjk\u003c/li\u003e\n\u003cli\u003eGregor Riepl\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilliard\u003c/li\u003e\n\u003cli\u003eJames Le Cuirot\u003c/li\u003e\n\u003cli\u003eJeremy Nimmer\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eKai (Kazuya Ito)\u003c/li\u003e\n\u003cli\u003ekaushal trivedi\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eLukas Geiger\u003c/li\u003e\n\u003cli\u003eŁukasz Langa\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael R. Crusoe\u003c/li\u003e\n\u003cli\u003emichaelm-openai\u003c/li\u003e\n\u003cli\u003eNeil Schemenauer\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/145a062651b5f9996b75ef32b7040bd2e885ed82\"\u003e\u003ccode\u003e145a062\u003c/code\u003e\u003c/a\u003e Bump version to 1.20.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/81cd49215c288eacb987de066f02daff2553b7c7\"\u003e\u003ccode\u003e81cd492\u003c/code\u003e\u003c/a\u003e Fix slicing with nonstrict optional (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21282\"\u003e#21282\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/908d3441eecbaa2a6193165317177db834d7ca1a\"\u003e\u003ccode\u003e908d344\u003c/code\u003e\u003c/a\u003e [mypyc] Set dunder attrs when adding module to sys.modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/ba28610fac9d2b33be210ca8dcfe4bc47b7af424\"\u003e\u003ccode\u003eba28610\u003c/code\u003e\u003c/a\u003e Initial support for Python 3.15.0a8 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21255\"\u003e#21255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7b0e09f48dbd3717ed008a273cd17e8e960c2037\"\u003e\u003ccode\u003e7b0e09f\u003c/code\u003e\u003c/a\u003e Fix match statement semantics for \u0026quot;or\u0026quot; pattern (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21156\"\u003e#21156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/92b74f226de62f7505f5ef5cb158e8ec9c58b8b7\"\u003e\u003ccode\u003e92b74f2\u003c/code\u003e\u003c/a\u003e Avoid widening types in conditional_types (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21242\"\u003e#21242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/0dcbfaa40b0e360a16baea9cf851955375d91b54\"\u003e\u003ccode\u003e0dcbfaa\u003c/code\u003e\u003c/a\u003e Fix is_overlapping_types for generic callables (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21208\"\u003e#21208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/210f518dede35292033ef0d387847406a0ccef8f\"\u003e\u003ccode\u003e210f518\u003c/code\u003e\u003c/a\u003e Correctly aggregate narrowing information on parent expressions (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21206\"\u003e#21206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c34530e53a10e385d8b0f1af4baa88a596b5ceaa\"\u003e\u003ccode\u003ec34530e\u003c/code\u003e\u003c/a\u003e Only set journal mode in coordinator (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21217\"\u003e#21217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/79a3ec6d01b56a27c00e9b3320c2b1d4d73a77f9\"\u003e\u003ccode\u003e79a3ec6\u003c/code\u003e\u003c/a\u003e Use WAL with SQLite cache, fix close (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21154\"\u003e#21154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.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 `ruff` from 0.15.9 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.9...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `commitizen` from 4.13.9 to 4.13.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/b5d5040f7980a5d2bce320d2a1ea1e04ac54b00c\"\u003e\u003ccode\u003eb5d5040\u003c/code\u003e\u003c/a\u003e bump: version 4.13.9 → 4.13.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/4879df32b6aa7dc09dd19dffc3f2a68d7ea7666e\"\u003e\u003ccode\u003e4879df3\u003c/code\u003e\u003c/a\u003e ci(bump): fix email generation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/70c0c1f4cf055eb0a28637cc6a260353c531e496\"\u003e\u003ccode\u003e70c0c1f\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/8eff9819bdb74b429cac7d70d44726bef6077600\"\u003e\u003ccode\u003e8eff981\u003c/code\u003e\u003c/a\u003e ci: fix email for commitizenbot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/61926a771ba9d560a8d3a9e994a355b53b544dee\"\u003e\u003ccode\u003e61926a7\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/042a089ab11db863d06021548909d1eb8c845250\"\u003e\u003ccode\u003e042a089\u003c/code\u003e\u003c/a\u003e fix(ci): use commitizen bot to push tags and commits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/a06ce0cb656f5b053fb1bc3bcafcde85ee4241e1\"\u003e\u003ccode\u003ea06ce0c\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/97fb356d59a31a55b31eefb5d92cc1028bee25b8\"\u003e\u003ccode\u003e97fb356\u003c/code\u003e\u003c/a\u003e ci: use setup-cz\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/9abbdbda0c3edb42062e9f66467e1c4b85ab5591\"\u003e\u003ccode\u003e9abbdbd\u003c/code\u003e\u003c/a\u003e fix(init): set semver2 as default if not python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/33b69c33e44ed52eb55f1e5fd488ec375052d733\"\u003e\u003ccode\u003e33b69c3\u003c/code\u003e\u003c/a\u003e docs: improve readability\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commitizen-tools/commitizen/compare/v4.13.9...v4.13.10\"\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.2 to 8.3.3\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.3.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.3 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.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\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\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\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/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.3.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/76552ff1e8c85837f911fc34037e702ae4327eda\"\u003e\u003ccode\u003e76552ff\u003c/code\u003e\u003c/a\u003e Show default string in prompt (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ac5cec5fe54e5a691e7bac17f441ce9498e0744c\"\u003e\u003ccode\u003eac5cec5\u003c/code\u003e\u003c/a\u003e Reorder ParameterSource from most to least explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c452e00e6772931b7071d9316b82b77e5b8f280\"\u003e\u003ccode\u003e8c452e0\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into show-default-string-in-prompt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c95c73bd5ef89eac638f85f1904a104ba4b1a32\"\u003e\u003ccode\u003e8c95c73\u003c/code\u003e\u003c/a\u003e Reconcile default value passing and default activation (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.2...8.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.9.0 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gitpython` from 3.1.46 to 3.1.47\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gitpython-developers/GitPython/releases\"\u003egitpython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.47 - with security fixes\u003c/h2\u003e\n\u003ch2\u003eAdvisories\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4\"\u003ehttps://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-x2qx-6953-8485\"\u003ehttps://github.com/gitpython-developers/GitPython/security/advisories/GHSA-x2qx-6953-8485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare next release by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2095\"\u003egitpython-developers/GitPython#2095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e335c0f6\u003c/code\u003e to \u003ccode\u003e4c63ee6\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2096\"\u003egitpython-developers/GitPython#2096\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: README Add urls and updated a relative url by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2098\"\u003egitpython-developers/GitPython#2098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GitConfigParser ignoring multiple [include] path entries by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2100\"\u003egitpython-developers/GitPython#2100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch back from Alpine to Debian for WSL by \u003ca href=\"https://github.com/EliahKagan\"\u003e\u003ccode\u003e@​EliahKagan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2108\"\u003egitpython-developers/GitPython#2108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump git/ext/gitdb from \u003ccode\u003e4c63ee6\u003c/code\u003e to \u003ccode\u003e5c1b303\u003c/code\u003e 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/gitpython-developers/GitPython/pull/2106\"\u003egitpython-developers/GitPython#2106\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRun \u003ccode\u003egc.collect()\u003c/code\u003e twice in \u003ccode\u003etest_rename\u003c/code\u003e on Python 3.12 by \u003ca href=\"https://github.com/EliahKagan\"\u003e\u003ccode\u003e@​EliahKagan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2109\"\u003egitpython-developers/GitPython#2109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: guard AutoInterrupt terminate during interpreter shutdown by \u003ca href=\"https://github.com/lweyrich1\"\u003e\u003ccode\u003e@​lweyrich1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2105\"\u003egitpython-developers/GitPython#2105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CI infrastructure for pre-commit by \u003ca href=\"https://github.com/EliahKagan\"\u003e\u003ccode\u003e@​EliahKagan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2110\"\u003egitpython-developers/GitPython#2110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the pre-commit group with 5 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/gitpython-developers/GitPython/pull/2111\"\u003egitpython-developers/GitPython#2111\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade Sphinx for 3.14 support; drop doc build support on 3.8; test 3.14 by \u003ca href=\"https://github.com/EliahKagan\"\u003e\u003ccode\u003e@​EliahKagan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2112\"\u003egitpython-developers/GitPython#2112\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eRepo.active_branch\u003c/code\u003e resolution for reftable-backed repositories by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2114\"\u003egitpython-developers/GitPython#2114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: warn about GitDB performance with large commits by \u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2115\"\u003egitpython-developers/GitPython#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecmd: fix kwarg formatting in docstring example by \u003ca href=\"https://github.com/UweSchwaeke\"\u003e\u003ccode\u003e@​UweSchwaeke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2117\"\u003egitpython-developers/GitPython#2117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump \u003ca href=\"https://github.com/astral-sh/ruff-pre-commit\"\u003ehttps://github.com/astral-sh/ruff-pre-commit\u003c/a\u003e from v0.15.5 to 0.15.8 in the pre-commit 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/gitpython-developers/GitPython/pull/2122\"\u003egitpython-developers/GitPython#2122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd trailer support for commit creation by \u003ca href=\"https://github.com/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2116\"\u003egitpython-developers/GitPython#2116\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHarden commit trailer subprocess handling and align trailer I/O paths by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2125\"\u003egitpython-developers/GitPython#2125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003egit.cmd.Git.execute(..): fix \u003ccode\u003ewith_stdout=False\u003c/code\u003e by \u003ca href=\"https://github.com/ngie-eign\"\u003e\u003ccode\u003e@​ngie-eign\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2126\"\u003egitpython-developers/GitPython#2126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure that multi-options are checked after splitting them with \u003ccode\u003eshlex\u003c/code\u003e by \u003ca href=\"https://github.com/Byron\"\u003e\u003ccode\u003e@​Byron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2130\"\u003egitpython-developers/GitPython#2130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBlock unsafe underscored git kwargs / Fix for GHSA-rpm5-65cw-6hj4 by \u003ca href=\"https://github.com/WesR\"\u003e\u003ccode\u003e@​WesR\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2131\"\u003egitpython-developers/GitPython#2131\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/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2098\"\u003egitpython-developers/GitPython#2098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2100\"\u003egitpython-developers/GitPython#2100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lweyrich1\"\u003e\u003ccode\u003e@​lweyrich1\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2105\"\u003egitpython-developers/GitPython#2105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2114\"\u003egitpython-developers/GitPython#2114\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2115\"\u003egitpython-developers/GitPython#2115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/UweSchwaeke\"\u003e\u003ccode\u003e@​UweSchwaeke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2117\"\u003egitpython-developers/GitPython#2117\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2116\"\u003egitpython-developers/GitPython#2116\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ngie-eign\"\u003e\u003ccode\u003e@​ngie-eign\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2126\"\u003egitpython-developers/GitPython#2126\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/WesR\"\u003e\u003ccode\u003e@​WesR\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/pull/2131\"\u003egitpython-developers/GitPython#2131\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.46...3.1.47\"\u003ehttps://github.com/gitpython-developers/GitPython/compare/3.1.46...3.1.47\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/gitpython-developers/GitPython/commit/4199cb89755f705801a4cb241723325b46201f51\"\u003e\u003ccode\u003e4199cb8\u003c/code\u003e\u003c/a\u003e bump version to 3.1.47\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/0f68db0710f9125762fca5dbc2328593537ae923\"\u003e\u003ccode\u003e0f68db0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2131\"\u003e#2131\u003c/a\u003e from WesR/main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/43d92dec4683568d11495956dd556161f17c3ea8\"\u003e\u003ccode\u003e43d92de\u003c/code\u003e\u003c/a\u003e git.cmd: harden unsafe option canonicalization and isolate push test cases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/9aed7cf8c20f69effcfcf7ebef09f312f73ab826\"\u003e\u003ccode\u003e9aed7cf\u003c/code\u003e\u003c/a\u003e linter fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/142195888e713542189533a52cdfc333f05c3af6\"\u003e\u003ccode\u003e1421958\u003c/code\u003e\u003c/a\u003e Block unsafe underscored git kwargs / Fix for GHSA-rpm5-65cw-6hj4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/da545232d0401fb9fb7660f9ff67991996674dda\"\u003e\u003ccode\u003eda54523\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2130\"\u003e#2130\u003c/a\u003e from gitpython-developers/fix-multi-options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/c9a26789d88b18f8b4620f37307df2976292d2a0\"\u003e\u003ccode\u003ec9a2678\u003c/code\u003e\u003c/a\u003e Make sure that multi-options are checked after splitting them with \u003ccode\u003eshlex\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/75e6c6bab4b3afab0bcb6bd6d2447b3e7eb6645c\"\u003e\u003ccode\u003e75e6c6b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gitpython-developers/GitPython/issues/2126\"\u003e#2126\u003c/a\u003e from ngie-eign/fix-execute-with_stdout-no-issues\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/6fc474265d863cbb9fbabdbfcc957f27cea2b5c4\"\u003e\u003ccode\u003e6fc4742\u003c/code\u003e\u003c/a\u003e test_avoids_changing...: don't leave test artifacts behind\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gitpython-developers/GitPython/commit/d966a0deabe3c8cf09ba3d1b0f54a29bdbdb4f1d\"\u003e\u003ccode\u003ed966a0d\u003c/code\u003e\u003c/a\u003e git.cmd.Git.execute(..): fix \u003ccode\u003ewith_stdout=False\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gitpython-developers/GitPython/compare/3.1.46...3.1.47\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastmcp` from 3.2.0 to 3.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\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\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\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/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.0...v3.2.4\"\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/elementsinteractive/lgtm-ai/pull/209","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/elementsinteractive%2Flgtm-ai/issues/209","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/209/packages"}},{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":"the dev-dependencies group","pr_created_at":"2026-04-27T06:24:16.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"4333527603","node_id":"PR_kwDOGsCFt87V2Hur","number":10746,"state":"closed","title":"build(python): bump pygithub from 2.9.0 to 2.9.1 in the dev-dependencies group","user":"dependabot[bot]","labels":["maintenance","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-27T06:35:06.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-27T06:24:16.000Z","updated_at":"2026-04-27T06:35:08.000Z","time_to_close":650,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(python)","packages":[{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":"the dev-dependencies group","ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 1 update: [pygithub](https://github.com/pygithub/pygithub).\n\nUpdates `pygithub` from 2.9.0 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\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=pygithub\u0026package-manager=uv\u0026previous-version=2.9.0\u0026new-version=2.9.1)](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 \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/ansys/ansys-tools-repo-sync/pull/10746","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansys%2Fansys-tools-repo-sync/issues/10746","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10746/packages"}},{"old_version":"2.8.1","new_version":"2.9.1","update_type":"minor","path":null,"pr_created_at":"2026-04-27T00:10:45.000Z","version_change":"2.8.1 → 2.9.1","issue":{"uuid":"4332356720","node_id":"PR_kwDOFvSVkM7VyZan","number":332,"state":"open","title":"Bump the python group across 1 directory with 26 updates","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-04-27T00:10:45.000Z","updated_at":"2026-04-27T00:14:23.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":26,"packages":[{"name":"pillow","old_version":"12.1.1","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"redis","old_version":"7.3.0","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"django","old_version":"5.2.12","new_version":"5.2.13","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.15.0","new_version":"65.16.1","repository_url":"https://github.com/sponsors/pennersr"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-django","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"django-anymail","old_version":"14.0","new_version":"15.0","repository_url":"https://github.com/anymail/django-anymail"},{"name":"werkzeug","old_version":"3.1.6","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"django-stubs","old_version":"5.2.9","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.15.6","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-debug-toolbar","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-coverage-plugin","old_version":"3.2.0","new_version":"3.2.2","repository_url":"https://github.com/coveragepy/django_coverage_plugin"},{"name":"rust-just","old_version":"1.47.0","new_version":"1.50.0","repository_url":"https://github.com/gnpaone/rust-just"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 26 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.1` | `12.2.0` |\n| [redis](https://github.com/redis/redis-py) | `7.3.0` | `7.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.3.1` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.8.1` | `2.9.1` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260408` |\n| [django](https://github.com/django/django) | `5.2.12` | `5.2.13` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.15.0` | `65.16.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-instrumentation-django](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `14.0` | `15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.6` | `3.1.8` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `5.2.9` | `6.0.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.6` | `0.15.12` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `6.2.0` | `6.3.0` |\n| [django-coverage-plugin](https://github.com/coveragepy/django_coverage_plugin) | `3.2.0` | `3.2.2` |\n| [rust-just](https://github.com/gnpaone/rust-just) | `1.47.0` | `1.50.0` |\n\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 `redis` from 7.3.0 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/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\u003eSee full diff in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.3.0...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release fixes a compatibility issue with Python 3.15:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/pull/218\"\u003eredis/hiredis-py#218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/3cb8f069006f7138620b065fba973ccc490bde3d\"\u003e\u003ccode\u003e3cb8f06\u003c/code\u003e\u003c/a\u003e Version 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/2836c965d28606fecfc8989059edb36a0c4fb320\"\u003e\u003ccode\u003e2836c96\u003c/code\u003e\u003c/a\u003e MNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10151\"\u003ecelery/celery#10151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove on_after_finalize signal documentation by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10155\"\u003ecelery/celery#10155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-commutative example to clarify partial arg ordering in canvas docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10157\"\u003ecelery/celery#10157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant test_isa_mapping test (fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10077\"\u003e#10077\u003c/a\u003e) by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10103\"\u003ecelery/celery#10103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10162\"\u003ecelery/celery#10162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated args from redis get_connection call by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10036\"\u003ecelery/celery#10036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/celery/celery/issues/6912\"\u003e#6912\u003c/a\u003e rpc backend reconnection error by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10179\"\u003ecelery/celery#10179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) by \u003ca href=\"https://github.com/drichardson\"\u003e\u003ccode\u003e@​drichardson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10165\"\u003ecelery/celery#10165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit by \u003ca href=\"https://github.com/tsangwailam\"\u003e\u003ccode\u003e@​tsangwailam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10181\"\u003ecelery/celery#10181\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix O(K²) message bloat in a chain of chords by \u003ca href=\"https://github.com/Borzik\"\u003e\u003ccode\u003e@​Borzik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10171\"\u003ecelery/celery#10171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mock connection interfaces to prevent \u003ccode\u003eTypeError\u003c/code\u003e during exception handling by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10178\"\u003ecelery/celery#10178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks by \u003ca href=\"https://github.com/aurangzaib048\"\u003e\u003ccode\u003e@​aurangzaib048\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10159\"\u003ecelery/celery#10159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003ereconnect_on_error\u003c/code\u003e to \u003ccode\u003eBaseResultConsumer\u003c/code\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10189\"\u003ecelery/celery#10189\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epep 649 by \u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10187\"\u003ecelery/celery#10187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix#9722 friendly status errors for CLI by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10190\"\u003ecelery/celery#10190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify after_return behavior for retried tasks by \u003ca href=\"https://github.com/KianAnbarestani\"\u003e\u003ccode\u003e@​KianAnbarestani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10192\"\u003ecelery/celery#10192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd compression header to message protocol docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10156\"\u003ecelery/celery#10156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated word in bootsteps comment by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10153\"\u003ecelery/celery#10153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove outdated autoreloader section from extending docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10154\"\u003ecelery/celery#10154\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/celery/celery/blob/v5.6.3/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.3\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-03-26\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix Django worker recursion bug + defensive checks for pool_cls.__module__ ([#10048](https://github.com/celery/celery/issues/10048))\n- Docs: Update user_preload_options example to use click. ([#10056](https://github.com/celery/celery/issues/10056))\n- Fix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo ([#10060](https://github.com/celery/celery/issues/10060))\n- Fix broken images on PyPI page ([#10066](https://github.com/celery/celery/issues/10066))\n- Remove broken reference. ([#10071](https://github.com/celery/celery/issues/10071))\n- Removed --dist=loadscope from smoke tests ([#10073](https://github.com/celery/celery/issues/10073))\n- Docs: Clarify task_retry signal args may be None ([#10076](https://github.com/celery/celery/issues/10076))\n- Update example for Django ([#10081](https://github.com/celery/celery/issues/10081))\n- Make tests compatible with pymongo \u0026gt;= 4.16 ([#10074](https://github.com/celery/celery/issues/10074))\n- fix: source install of cassandra-driver ([#10105](https://github.com/celery/celery/issues/10105))\n- fix: register task cross-reference role in Sphinx extension ([#10100](https://github.com/celery/celery/issues/10100))\n- fix: avoid cycle detection in native delayed delivery ([#10095](https://github.com/celery/celery/issues/10095))\n- fix(asynpool): avoid AttributeError when proc lacks _sentinel_poll ([#10086](https://github.com/celery/celery/issues/10086))\n- fix dusk_astronomical horizon sign (+18 -\u0026gt; -18) ([#10121](https://github.com/celery/celery/issues/10121))\n- Fix/10106 onupdate col use lambda func ([#10108](https://github.com/celery/celery/issues/10108))\n- Fix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 ([#10083](https://github.com/celery/celery/issues/10083)) ([#10123](https://github.com/celery/celery/issues/10123))\n- Fix 10109 db backend connection health ([#10124](https://github.com/celery/celery/issues/10124))\n- Database Backend filter unsupport sql engine arguments with nullpool [#7355](https://github.com/celery/celery/issues/7355) ([#10134](https://github.com/celery/celery/issues/10134))\n- fix(beat): correct argument order in Service.__reduce__ ([#10137](https://github.com/celery/celery/issues/10137))\n- ci: declare explicit read-only token permissions in workflow jobs ([#10139](https://github.com/celery/celery/issues/10139))\n- chore: 'boto3to' to 'boto3 to' ([#10133](https://github.com/celery/celery/issues/10133))\n- Database Backend: Add missing index on date_done (Fixes [#10097](https://github.com/celery/celery/issues/10097)) ([#10098](https://github.com/celery/celery/issues/10098))\n- docs: fix typo in CONTRIBUTING.rst ([#10141](https://github.com/celery/celery/issues/10141))\n- Refer to Flower / Prometheus for monitoring ([#10140](https://github.com/celery/celery/issues/10140))\n- docs: remove duplicated words in broker and routing docs ([#10146](https://github.com/celery/celery/issues/10146))\n- docs: fix stale version reference and grammar in README ([#10145](https://github.com/celery/celery/issues/10145))\n- docs: fix wording in Celery 5.3 worker pool notes ([#10149](https://github.com/celery/celery/issues/10149))\n- docs: fix duplicated wording in 3.1 changelog entry ([#10152](https://github.com/celery/celery/issues/10152))\n- docs: fix changelog typo in context manager wording ([#10144](https://github.com/celery/celery/issues/10144))\n- Fix/10096 worker fails to reconnect after redis failover ([#10151](https://github.com/celery/celery/issues/10151))\n- Improve on_after_finalize signal documentation ([#10155](https://github.com/celery/celery/issues/10155))\n- Add non-commutative example to clarify partial arg ordering in canvas docs ([#10157](https://github.com/celery/celery/issues/10157))\n- Remove redundant test_isa_mapping test (fixes [#10077](https://github.com/celery/celery/issues/10077)) ([#10103](https://github.com/celery/celery/issues/10103))\n- Upgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg ([#10162](https://github.com/celery/celery/issues/10162))\n- Remove deprecated args from redis get_connection call ([#10036](https://github.com/celery/celery/issues/10036))\n- Fix [#6912](https://github.com/celery/celery/issues/6912) rpc backend reconnection error ([#10179](https://github.com/celery/celery/issues/10179))\n- Fix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) ([#10165](https://github.com/celery/celery/issues/10165))\n- docs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit ([#10181](https://github.com/celery/celery/issues/10181))\n- Fix O(K²) message bloat in a chain of chords ([#10171](https://github.com/celery/celery/issues/10171))\n- Fix mock connection interfaces to prevent `TypeError` during exception handling ([#10178](https://github.com/celery/celery/issues/10178))\n- fix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks ([#10159](https://github.com/celery/celery/issues/10159))\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/3f4d8d795ad128bd7430cc5dc174a802cded425c\"\u003e\u003ccode\u003e3f4d8d7\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.3 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10221\"\u003e#10221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a989e8cf8876274b1f0612abffeeb2e9995ed321\"\u003e\u003ccode\u003ea989e8c\u003c/code\u003e\u003c/a\u003e fix: clear the timer while catch the exception (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10218\"\u003e#10218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d06de5f047620b0ea2bdbdb3c0c56137b79ae9a1\"\u003e\u003ccode\u003ed06de5f\u003c/code\u003e\u003c/a\u003e Chore(deps): Bump nick-fields/retry from 3 to 4 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10213\"\u003e#10213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/c3c19c31dc3e21f16d4d85a8ba8401a9223ace09\"\u003e\u003ccode\u003ec3c19c3\u003c/code\u003e\u003c/a\u003e Fix: prioritize request ignore_result over task definition (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10184\"\u003e#10184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d23be53f6f3600d48df35a797c63eb1c7d4d4b97\"\u003e\u003ccode\u003ed23be53\u003c/code\u003e\u003c/a\u003e Remove outdated autoreloader section from extending docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10154\"\u003e#10154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ada2da7475a5fa9f9ad079149a5d6864634abc28\"\u003e\u003ccode\u003eada2da7\u003c/code\u003e\u003c/a\u003e docs: fix duplicated word in bootsteps comment\\n\\nSigned-off-by: Rohan Santho...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f45f62beb3b16ae960944f8c97de13ccf15f2d0a\"\u003e\u003ccode\u003ef45f62b\u003c/code\u003e\u003c/a\u003e Add compression header to message protocol docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10156\"\u003e#10156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9a270925546ed9d0ca0303fb5006edc86b705fd9\"\u003e\u003ccode\u003e9a27092\u003c/code\u003e\u003c/a\u003e docs: clarify after_return behavior for retried tasks (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10192\"\u003e#10192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6ee6230cd80ef6c3e7482e1f4cd970fbb0629b23\"\u003e\u003ccode\u003e6ee6230\u003c/code\u003e\u003c/a\u003e Fix#9722 friendly status errors for CLI (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10190\"\u003e#10190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a9a2d4cecaf0e58c401ad6f68f022afa19770ac2\"\u003e\u003ccode\u003ea9a2d4c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10186\"\u003e#10186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.6.2...v5.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.8.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.8.1...v2.9.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 `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 `django-allauth` from 65.15.0 to 65.16.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\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 `opentelemetry-api` from 1.40.0 to 1.41.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/v1.41.1/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.41.1/0.62b1 (2026-04-24)\u003c/h2\u003e\n\u003ch2\u003eVersion 1.41.0/0.62b0 (2026-04-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ehost\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].host\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5002\"\u003e#5002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003econtainer\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].container\u003c/code\u003e, using entry point loading of the \u003ccode\u003eopentelemetry-resource-detector-containerid\u003c/code\u003e contrib package\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5004\"\u003e#5004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_tracer_provider\u003c/code\u003e/\u003ccode\u003econfigure_tracer_provider\u003c/code\u003e to declarative file configuration, enabling TracerProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4985\"\u003e#4985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnabled the flake8-tidy-import plugins rules for the ruff linter. These rules throw warnings for relative imports in the modules.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5019\"\u003e#5019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Fix \u003ccode\u003eAttributeError\u003c/code\u003e in \u003ccode\u003eExplicitBucketHistogramAggregation\u003c/code\u003e when applied to non-Histogram instruments without explicit boundaries\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5034\"\u003e#5034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eBatchLogRecordProcessor\u003c/code\u003e default \u003ccode\u003eschedule_delay_millis\u003c/code\u003e from 5000ms to 1000ms to comply with the OTel specification. Note: logs may be exported 5x more frequently by default (e.g. for users who don't explicitly set the \u003ccode\u003eOTEL_BLRP_SCHEDULE_DELAY\u003c/code\u003e env var).\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4998\"\u003e#4998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eprocess\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].process\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5001\"\u003e#5001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add shared \u003ccode\u003e_parse_headers\u003c/code\u003e helper for declarative config OTLP exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Replace a broad exception in attribute cleaning tests to satisfy pylint in the \u003ccode\u003elint-opentelemetry-api\u003c/code\u003e CI job\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_meter_provider\u003c/code\u003e/\u003ccode\u003econfigure_meter_provider\u003c/code\u003e to declarative file configuration, enabling MeterProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4987\"\u003e#4987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_resource\u003c/code\u003e and \u003ccode\u003ecreate_propagator\u003c/code\u003e/\u003ccode\u003econfigure_propagator\u003c/code\u003e to declarative file configuration, enabling Resource and propagator instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4979\"\u003e#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Map Python \u003ccode\u003eCRITICAL\u003c/code\u003e log level to OTel \u003ccode\u003eFATAL\u003c/code\u003e severity text per the specification\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4984\"\u003e#4984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add file configuration support with YAML/JSON loading, environment variable substitution, and schema validation against the vendored OTel config JSON schema\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4898\"\u003e#4898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix intermittent CI failures in \u003ccode\u003egetting-started\u003c/code\u003e and \u003ccode\u003etracecontext\u003c/code\u003e jobs caused by GitHub git CDN SHA propagation lag by installing contrib packages from the already-checked-out local copy instead of a second git clone\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4958\"\u003e#4958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: fix type annotations on \u003ccode\u003eMetricReader\u003c/code\u003e and related types\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4938/\"\u003e#4938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement log creation metric\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4935\"\u003e#4935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement metric reader metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4970\"\u003e#4970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement processor metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5012\"\u003e#5012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: upgrade vendored OTel configuration schema from v1.0.0-rc.3 to v1.0.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4965\"\u003e#4965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimprove check-links ci job\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4978\"\u003e#4978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve some Pyright type errors in Span/ReadableSpan and utility stubs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4973\"\u003e#4973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-prometheus\u003c/code\u003e: Fix metric name prefix\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4895\"\u003e#4895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add deepcopy support for \u003ccode\u003eBoundedAttributes\u003c/code\u003e and \u003ccode\u003eBoundedList\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4934\"\u003e#4934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-proto-json\u003c/code\u003e, \u003ccode\u003eopentelemetry-codegen-json\u003c/code\u003e: Implement custom protoc plugin to generate OTLP JSON class definitions\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/760e0248edbd01ae817941c1dfa61c07241b0727\"\u003e\u003ccode\u003e760e024\u003c/code\u003e\u003c/a\u003e Prepare release 1.41.1/0.62b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5138\"\u003e#5138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/90e06bcd8c024a38ecf388c19c5a15fc094ea0ed\"\u003e\u003ccode\u003e90e0...\n\n_Description has been truncated_","html_url":"https://github.com/mfosterw/cookiestocracy/pull/332","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfosterw%2Fcookiestocracy/issues/332","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/332/packages"}},{"old_version":"2.8.1","new_version":"2.9.1","update_type":"minor","path":null,"pr_created_at":"2026-04-26T04:43:10.000Z","version_change":"2.8.1 → 2.9.1","issue":{"uuid":"4330040168","node_id":"PR_kwDOGvy9Ws7VrrCP","number":49,"state":"open","title":"Bump the dev group across 1 directory with 6 updates","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-04-26T04:43:10.000Z","updated_at":"2026-05-05T00:20:34.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dev","update_count":6,"packages":[{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"tox","old_version":"4.34.1","new_version":"4.53.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"pyright","old_version":"1.1.408","new_version":"1.1.409","repository_url":"https://github.com/RobertCraigie/pyright-python"},{"name":"pytest-regressions","old_version":"2.9.1","new_version":"2.10.0","repository_url":"https://github.com/ESSS/pytest-regressions"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.8.1` | `2.9.1` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.34.1` | `4.53.1` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.408` | `1.1.409` |\n| [pytest-regressions](https://github.com/ESSS/pytest-regressions) | `2.9.1` | `2.10.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n\n\nUpdates `pygithub` from 2.8.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.8.1...v2.9.1\"\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 `tox` from 4.34.1 to 4.53.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.53.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(security): harden user-facing logs and untrusted inputs 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/3924\"\u003etox-dev/tox#3924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(type): correct argparse override signatures for ty 0.0.33 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/3932\"\u003etox-dev/tox#3932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: allow deps arrays in TOML schema by \u003ca href=\"https://github.com/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\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/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\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.53.0...4.53.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.53.0...4.53.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.53.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(toml): allow bare range/labeled dicts in env_list 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/3923\"\u003etox-dev/tox#3923\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.52.1...4.53.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.52.1...4.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.52.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003euse normalize_isa for architecture factor matching by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3919\"\u003etox-dev/tox#3919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(pip): invalidate install cache on resolution env var changes 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/3921\"\u003etox-dev/tox#3921\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.52.0...4.52.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.52.0...4.52.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.52.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eremove unsupported --remote flag from gh repo fork by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3908\"\u003etox-dev/tox#3908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(config): support escaped dots in -x override keys 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/3910\"\u003etox-dev/tox#3910\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(docs): auto-generate manpage from CLI parser 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/3911\"\u003etox-dev/tox#3911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(runner): add PEP 723 inline script metadata support 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/3912\"\u003etox-dev/tox#3912\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.51.0...4.52.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.51.0...4.52.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.51.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(workflows): add zizmor security auditing 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/3896\"\u003etox-dev/tox#3896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ebase_python_file\u003c/code\u003e config option by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3899\"\u003etox-dev/tox#3899\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/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.53.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHardening pass on user-facing logging and config parsing:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMask secret-looking \u003ccode\u003e--key=value\u003c/code\u003e flag values in command logs (terminal warnings, \u003ccode\u003e.tox/\u0026lt;env\u0026gt;/log/*.log\u003c/code\u003e, and\n\u003ccode\u003eOutcome\u003c/code\u003e \u003ccode\u003e__repr__\u003c/code\u003e) using the same keyword regex previously applied to environment variable values.\u003c/li\u003e\n\u003cli\u003eResolve PEP 723 \u003ccode\u003escript\u003c/code\u003e paths and reject any that escape \u003ccode\u003etox_root\u003c/code\u003e; cap the script read at 5 MiB so a symlink\nto \u003ccode\u003e/dev/zero\u003c/code\u003e cannot exhaust memory.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e of a constructed \u003ccode\u003eLiteral[...]\u003c/code\u003e string in the CLI parser with a direct\n\u003ccode\u003eLiteral[tuple(action.choices)]\u003c/code\u003e subscript.\u003c/li\u003e\n\u003cli\u003ePass \u003ccode\u003etimeout=30\u003c/code\u003e to \u003ccode\u003eurlopen\u003c/code\u003e when fetching a remote requirements file so a slow or unresponsive mirror cannot\nhang \u003ccode\u003etox\u003c/code\u003e indefinitely. (:issue:\u003ccode\u003e3924\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow the generated TOML schema to validate array values for \u003ccode\u003edeps\u003c/code\u003e. (:issue:\u003ccode\u003e3929\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCorrect type annotations for \u003ccode\u003eArgumentParser.parse_args\u003c/code\u003e and \u003ccode\u003eparse_known_args\u003c/code\u003e overrides following \u003ccode\u003etypeshed PR [#15613](https://github.com/tox-dev/tox/issues/15613) \u0026lt;https://github.com/python/typeshed/pull/15613\u0026gt;\u003c/code\u003e_, which widened the \u003ccode\u003eargs\u003c/code\u003e parameter from \u003ccode\u003eSequence[str]\u003c/code\u003e\nto \u003ccode\u003eIterable[str]\u003c/code\u003e. The narrower type in tox's overrides violated the Liskov substitution principle and caused\n\u003ccode\u003einvalid-method-override\u003c/code\u003e errors with \u003ccode\u003ety\u003c/code\u003e 0.0.33. Also correct the \u003ccode\u003eoption_spec\u003c/code\u003e annotation in\n\u003ccode\u003edocs/tox_conf.py\u003c/code\u003e to \u003ccode\u003eClassVar[dict[str, Callable[[str], Any]]]\u003c/code\u003e matching the docutils stubs type.\n(:issue:\u003ccode\u003e3932\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.53.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eFeatures - 4.53.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eTOML \u003ccode\u003eenv_list\u003c/code\u003e now accepts bare range dicts (\u003ccode\u003e{ prefix = \u0026quot;3.\u0026quot;, start = 12, stop = 14 }\u003c/code\u003e) and bare labeled dicts\n(\u003ccode\u003e{ ecosystem = [\u0026quot;oci\u0026quot;, \u0026quot;python\u0026quot;] }\u003c/code\u003e) as top-level items, removing the \u003ccode\u003e{ product = [...] }\u003c/code\u003e wrapper when there is\nonly a single factor group - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e3923\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.53.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eNesting a range or labeled dict inside a \u003ccode\u003eproduct\u003c/code\u003e factor-group list now raises a clear error pointing at the\nun-nesting fix, instead of silently producing a malformed environment name - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e3923\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.52.1 (2026-04-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eBug fixes - 4.52.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eChanging a resolution-affecting environment variable via \u003ccode\u003eset_env\u003c/code\u003e (e.g. \u003ccode\u003ePIP_INDEX_URL\u003c/code\u003e) now invalidates the\ninstall cache and triggers a reinstall, rather than incorrectly reusing the cached environment - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e3917\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003enormalize_isa\u003c/code\u003e from \u003ccode\u003epython-discovery\u003c/code\u003e for architecture factor matching, supporting aliases like \u003ccode\u003ei686\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/2b177917e4c0208c3e380e43f8d32d507180d82e\"\u003e\u003ccode\u003e2b17791\u003c/code\u003e\u003c/a\u003e release 4.53.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/86234dd57fc6a6dbf801aa98a91642cb9daf1dc8\"\u003e\u003ccode\u003e86234dd\u003c/code\u003e\u003c/a\u003e fix: allow deps arrays in TOML schema (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3931\"\u003e#3931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/dd305fe8f347c49fcd3bd63d5e56c912e4c428f2\"\u003e\u003ccode\u003edd305fe\u003c/code\u003e\u003c/a\u003e 🐛 fix(type): correct argparse override signatures for ty 0.0.33 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3932\"\u003e#3932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/3aa3cd5d4226dfdb54de3de810cd9367390c6424\"\u003e\u003ccode\u003e3aa3cd5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/59b6cd2c5cd7b7ebc44f65646f239ec6f2382f6e\"\u003e\u003ccode\u003e59b6cd2\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3928\"\u003e#3928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/3765fcd51f62efeac5b948fcf492dcd1d18398ce\"\u003e\u003ccode\u003e3765fcd\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3927\"\u003e#3927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/b76c383d55551c691ca3edda91838ce79b5de82a\"\u003e\u003ccode\u003eb76c383\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/cache from 5.0.4 to 5.0.5 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3926\"\u003e#3926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/7b0ad944ba8ebe4644289333660280fcccf8ab8a\"\u003e\u003ccode\u003e7b0ad94\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3925\"\u003e#3925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/4dcde44c0746138421bef38f1c0dac42ee505223\"\u003e\u003ccode\u003e4dcde44\u003c/code\u003e\u003c/a\u003e 🐛 fix(security): harden user-facing logs and untrusted inputs (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3924\"\u003e#3924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/4c584f24ab0331d26468216116a8c1382b75c21f\"\u003e\u003ccode\u003e4c584f2\u003c/code\u003e\u003c/a\u003e release 4.53.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox/compare/4.34.1...4.53.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyright` from 1.1.408 to 1.1.409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RobertCraigie/pyright-python/commit/d7508e5425d3d02761d70dab1f9a2086573af429\"\u003e\u003ccode\u003ed7508e5\u003c/code\u003e\u003c/a\u003e [pyright updated to 1.1.409] Update Version (\u003ca href=\"https://redirect.github.com/RobertCraigie/pyright-python/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/RobertCraigie/pyright-python/compare/v1.1.408...v1.1.409\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-regressions` from 2.9.1 to 2.10.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ESSS/pytest-regressions/blob/master/CHANGELOG.rst\"\u003epytest-regressions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.10.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-02-10\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#225](https://github.com/ESSS/pytest-regressions/issues/225) \u0026lt;https://github.com/ESSS/pytest-regressions/issues/225\u0026gt;\u003c/code\u003e__: Add support for Pandas 3.0 to \u003ccode\u003edataframe_regression\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ESSS/pytest-regressions/commit/6500a86bf6cbc4baa0eaf5e04128886038a75404\"\u003e\u003ccode\u003e6500a86\u003c/code\u003e\u003c/a\u003e Release 2.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ESSS/pytest-regressions/commit/0f4eb118e53e010bf223a7d9bcb8d723d42f4788\"\u003e\u003ccode\u003e0f4eb11\u003c/code\u003e\u003c/a\u003e Add support for pandas 3 (\u003ca href=\"https://redirect.github.com/ESSS/pytest-regressions/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ESSS/pytest-regressions/commit/f040b7c0088d02f4abec4281e6d59748963ac7e0\"\u003e\u003ccode\u003ef040b7c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ESSS/pytest-regressions/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ESSS/pytest-regressions/commit/3a793beabae766116cf2a3ccdc40896514c95720\"\u003e\u003ccode\u003e3a793be\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ESSS/pytest-regressions/issues/223\"\u003e#223\u003c/a\u003e from ESSS/release-2.9.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ESSS/pytest-regressions/compare/v2.9.1...v2.10.0\"\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","html_url":"https://github.com/taminomara/yuio/pull/49","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/taminomara%2Fyuio/issues/49","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/49/packages"}},{"old_version":"2.8.1","new_version":"2.9.1","update_type":"minor","path":null,"pr_created_at":"2026-04-24T19:36:26.000Z","version_change":"2.8.1 → 2.9.1","issue":{"uuid":"4325150491","node_id":"PR_kwDONvGycc7VcjEh","number":368,"state":"open","title":"Bump pygithub from 2.8.1 to 2.9.1","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-04-24T19:36:26.000Z","updated_at":"2026-05-02T15:24:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.8.1 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.8.1...v2.9.1\"\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/clokep/relapse/pull/368","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/clokep%2Frelapse/issues/368","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/368/packages"}},{"old_version":"2.5.0","new_version":"2.9.1","update_type":"minor","path":null,"pr_created_at":"2026-04-24T12:08:48.000Z","version_change":"2.5.0 → 2.9.1","issue":{"uuid":"4322786492","node_id":"PR_kwDONbH5oc7VUya4","number":54,"state":"closed","title":"Bump pygithub from 2.5.0 to 2.9.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-24T12:11:42.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-24T12:08:48.000Z","updated_at":"2026-04-24T12:11:44.000Z","time_to_close":174,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pygithub","old_version":"2.5.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.5.0 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.5.0...v2.9.1\"\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=pygithub\u0026package-manager=pip\u0026previous-version=2.5.0\u0026new-version=2.9.1)](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/ossprey/gh-action/pull/54","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ossprey%2Fgh-action/issues/54","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/54/packages"}},{"old_version":"2.8.1","new_version":"2.9.1","update_type":"minor","path":null,"pr_created_at":"2026-04-22T02:49:48.000Z","version_change":"2.8.1 → 2.9.1","issue":{"uuid":"4306428810","node_id":"PR_kwDORwUwGc7UfX_n","number":36,"state":"closed","title":"Bump the uv-dependency-updates group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-29T02:48:42.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-22T02:49:48.000Z","updated_at":"2026-04-29T02:48:44.000Z","time_to_close":604734,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"uv-dependency-updates","update_count":12,"packages":[{"name":"click","old_version":"8.3.1","new_version":"8.3.2","repository_url":"https://github.com/pallets/click"},{"name":"filelock","old_version":"3.25.2","new_version":"3.28.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"google-api-python-client","old_version":"2.193.0","new_version":"2.194.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-auth-httplib2","old_version":"0.3.0","new_version":"0.3.1","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth-oauthlib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"packaging","old_version":"26.0","new_version":"26.1","repository_url":"https://github.com/pypa/packaging"},{"name":"prek","old_version":"0.3.6","new_version":"0.3.9","repository_url":"https://github.com/j178/prek"},{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.3.3","new_version":"15.0.0","repository_url":"https://github.com/Textualize/rich"},{"name":"boto3","old_version":"1.42.72","new_version":"1.42.91","repository_url":"https://github.com/boto/boto3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-dependency-updates group with 12 updates in the /dev/breeze directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.2` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.25.2` | `3.28.0` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.193.0` | `2.194.0` |\n| [google-auth-httplib2](https://github.com/googleapis/google-cloud-python) | `0.3.0` | `0.3.1` |\n| [google-auth-oauthlib](https://github.com/googleapis/google-cloud-python) | `1.3.0` | `1.3.1` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.1` |\n| [prek](https://github.com/j178/prek) | `0.3.6` | `0.3.9` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.8.1` | `2.9.1` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [rich](https://github.com/Textualize/rich) | `14.3.3` | `15.0.0` |\n| [boto3](https://github.com/boto/boto3) | `1.42.72` | `1.42.91` |\n\n\nUpdates `click` from 8.3.1 to 8.3.2\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.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.2 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.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3084\"\u003e#3084\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3152\"\u003e#3152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3199\"\u003e#3199\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3202\"\u003e#3202\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3209\"\u003e#3209\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3212\"\u003e#3212\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2991\"\u003e#2991\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2993\"\u003e#2993\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3110\"\u003e#3110\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3140\"\u003e#3140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3121\"\u003e#3121\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3201\"\u003e#3201\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3213\"\u003e#3213\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3225\"\u003e#3225\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/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.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n:issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e2991\u003c/code\u003e :issue:\u003ccode\u003e2993\u003c/code\u003e :issue:\u003ccode\u003e3110\u003c/code\u003e :pr:\u003ccode\u003e3139\u003c/code\u003e :pr:\u003ccode\u003e3140\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. :pr:\u003ccode\u003e3139\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. :issue:\u003ccode\u003e3121\u003c/code\u003e :pr:\u003ccode\u003e3201\u003c/code\u003e :pr:\u003ccode\u003e3213\u003c/code\u003e :pr:\u003ccode\u003e3225\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/052c006033729bbb422cbdad0c4fee988ecb5aa5\"\u003e\u003ccode\u003e052c006\u003c/code\u003e\u003c/a\u003e Change update release date.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/502b7ce7b131473ef00a3586e60bb000f33b4c43\"\u003e\u003ccode\u003e502b7ce\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' of \u003ca href=\"https://github.com/pallets/click\"\u003ehttps://github.com/pallets/click\u003c/a\u003e into release-8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a0a37e411820861d48e21b131fdd840abaf746e0\"\u003e\u003ccode\u003ea0a37e4\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3301\"\u003e#3301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/57be6fc2b40eb40279d022e6aabc983ee0dfb7a9\"\u003e\u003ccode\u003e57be6fc\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/781d6a88bdd30229e72a84cd6753b0235f339679\"\u003e\u003ccode\u003e781d6a8\u003c/code\u003e\u003c/a\u003e Update publish workflows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3266\"\u003e#3266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ff795b66ba945239c779b528171f5fe4536cf844\"\u003e\u003ccode\u003eff795b6\u003c/code\u003e\u003c/a\u003e Update precommit pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/dd87ef4f9fa7d6f13e14885e9a6842a21ededebc\"\u003e\u003ccode\u003edd87ef4\u003c/code\u003e\u003c/a\u003e Update github action pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/93d3f9d22e90035bc2b51c2183c15bd4a021376f\"\u003e\u003ccode\u003e93d3f9d\u003c/code\u003e\u003c/a\u003e Release version 8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3299ba1a8a5de34b24a7226a683a837d8a0857e7\"\u003e\u003ccode\u003e3299ba1\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3264\"\u003e#3264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b7f62c4d002e5b5bca3ebef6b995b7338740fe6f\"\u003e\u003ccode\u003eb7f62c4\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.1...8.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.25.2 to 3.28.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.28.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again 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/filelock/pull/529\"\u003etox-dev/filelock#529\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/filelock/compare/3.27.0...3.28.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.27.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters 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/filelock/pull/528\"\u003etox-dev/filelock#528\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/filelock/compare/3.26.1...3.27.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.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(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling by \u003ca href=\"https://github.com/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\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/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\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/filelock/compare/3.26.0...3.26.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.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(workflows): add zizmor security auditing 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/filelock/pull/517\"\u003etox-dev/filelock#517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 fix(ci): restore git credentials for release job 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/filelock/pull/520\"\u003etox-dev/filelock#520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking 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/filelock/pull/524\"\u003etox-dev/filelock#524\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/filelock/compare/3.25.2...3.26.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.25.2...3.26.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e3.29.0 (2026-04-19)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): enable stale lock detection on Windows :pr:\u003ccode\u003e534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(async): use single-thread executor for lock consistency :pr:\u003ccode\u003e533\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 :pr:\u003ccode\u003e530\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.28.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again :pr:\u003ccode\u003e529\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.1 (2026-04-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling :pr:\u003ccode\u003e518\u003c/code\u003e - by :user:\u003ccode\u003enaarob\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 :pr:\u003ccode\u003e525\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.0 (2026-04-06)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking :pr:\u003ccode\u003e524\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e523\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 :pr:\u003ccode\u003e522\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove persist-credentials: false from release job :pr:\u003ccode\u003e520\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e519\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing :pr:\u003ccode\u003e517\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e516\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e514\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.2 (2026-03-11)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(unix): suppress EIO on close in Docker bind mounts :pr:\u003ccode\u003e513\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.1 (2026-03-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e510\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(win): restore best-effort lock file cleanup on release :pr:\u003ccode\u003e511\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/filelock/commit/55de20c0819652362881906fa289feff5a323c19\"\u003e\u003ccode\u003e55de20c\u003c/code\u003e\u003c/a\u003e Release 3.28.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/476b0e4a92776fe530b5d993247342f039004174\"\u003e\u003ccode\u003e476b0e4\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): unbreak release workflow, publish to PyPI again (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/824713edc32b54efd66566907f97c1238502810e\"\u003e\u003ccode\u003e824713e\u003c/code\u003e\u003c/a\u003e ✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/528\"\u003e#528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/9879de9298db93ffba0a9f58d9de75e9e2a00fc1\"\u003e\u003ccode\u003e9879de9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/527\"\u003e#527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4cfab498b6916f89be46152efa4a72e9731be98f\"\u003e\u003ccode\u003e4cfab49\u003c/code\u003e\u003c/a\u003e Release 3.26.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/734c9f26e8107ad24886129fc68865f0b46cf71f\"\u003e\u003ccode\u003e734c9f2\u003c/code\u003e\u003c/a\u003e 🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/c9f9cb4c63b69d1bcfbcf98fe7c8dc439f51d473\"\u003e\u003ccode\u003ec9f9cb4\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/525\"\u003e#525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/ad728d72a3e492297208c16b7c0787f4bfb6ccd0\"\u003e\u003ccode\u003ead728d7\u003c/code\u003e\u003c/a\u003e Release 3.26.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f8a9849d63f256229d7c6481081c5df58f63e2ba\"\u003e\u003ccode\u003ef8a9849\u003c/code\u003e\u003c/a\u003e ✨ feat(soft): add PID inspection and lock breaking (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/fc53a83fa16c748b687e598f12540b876c642fce\"\u003e\u003ccode\u003efc53a83\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.25.2...3.28.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-api-python-client` from 2.193.0 to 2.194.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-api-python-client/releases\"\u003egoogle-api-python-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.194.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.193.0...v2.194.0\"\u003e2.194.0\u003c/a\u003e (2026-04-07)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/91646aa8f11c3491c8ae96cb142098d23bd4d86a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/91646aa8f11c3491c8ae96cb142098d23bd4d86a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eagentregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/c63837ea9aeb0f90bc3d9bed82272538c65f711d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/c63837ea9aeb0f90bc3d9bed82272538c65f711d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eagentregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/dcb4b8996c6f66c6624b5d55762bd3b3b2657188\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/dcb4b8996c6f66c6624b5d55762bd3b3b2657188\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/03a174d2847d72f29e830b632dfd286bae061aef\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/03a174d2847d72f29e830b632dfd286bae061aef\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/6bcf698be695688ae2b8f495dd8b1facbea36652\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/6bcf698be695688ae2b8f495dd8b1facbea36652\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eaiplatform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/ea9256491a9082b46c10d8d123ac8d6117b5242e\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/ea9256491a9082b46c10d8d123ac8d6117b5242e\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealertcenter:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5dff47cddcdd1ea2a01cb06f4fc51b4615412c1d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5dff47cddcdd1ea2a01cb06f4fc51b4615412c1d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealertcenter:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/70213df06da6dca4e0ca0773f65ecce0057ae588\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/70213df06da6dca4e0ca0773f65ecce0057ae588\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ealloydb:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/e30b3b574430d6d5786133182a61fe309d5ff8ea\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/e30b3b574430d6d5786133182a61fe309d5ff8ea\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eanalyticsadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8c81a7c312e9eb83779d694d704d9a7ece84960b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8c81a7c312e9eb83779d694d704d9a7ece84960b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapigee:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8a3ff159fe52d11541cd3c7081f27d3a92ec157c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8a3ff159fe52d11541cd3c7081f27d3a92ec157c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapikeys:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/cec06010ccf58100aa875b5a82b5a4dc6119e3d3\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/cec06010ccf58100aa875b5a82b5a4dc6119e3d3\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eappengine:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/7935e3c7858b5273941d95507f1c5f395bb73dfd\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/7935e3c7858b5273941d95507f1c5f395bb73dfd\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eartifactregistry:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/2904124c55cfbad06dd531294d19df9b03ffd08b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/2904124c55cfbad06dd531294d19df9b03ffd08b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/3872d47f6e3077b77ca5e623d683aa4c9290826b\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/3872d47f6e3077b77ca5e623d683aa4c9290826b\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebackupdr:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/6e98d8bf562dcaf4628db21f8572b3fcd4333991\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/6e98d8bf562dcaf4628db21f8572b3fcd4333991\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquerydatatransfer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/5feddee128ec217348d270c82dd2d8049f175f04\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/5feddee128ec217348d270c82dd2d8049f175f04\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigquery:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/9ff91f076330299320b29103467078bcaf5bbc4c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/9ff91f076330299320b29103467078bcaf5bbc4c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigtableadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/45c3a5686de4f12a2b9cbc73dca8be5a8837a4ac\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/45c3a5686de4f12a2b9cbc73dca8be5a8837a4ac\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ebigtableadmin:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/84f19284846c9f3f230bac672bb2812ded4d891a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/84f19284846c9f3f230bac672bb2812ded4d891a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a1faed1dbb4c75c36f6f75209bc3d8e948030283\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a1faed1dbb4c75c36f6f75209bc3d8e948030283\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eces:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f3eca84fe126d4d004da30e84d2f854452c838e8\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f3eca84fe126d4d004da30e84d2f854452c838e8\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003echat:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f6cf5d2801b1bb0cffbd8d078d97287950bb9e88\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f6cf5d2801b1bb0cffbd8d078d97287950bb9e88\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudbilling:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/1dcb981e3521fd102a537203e557a46cb77b78db\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/1dcb981e3521fd102a537203e557a46cb77b78db\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudbuild:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/9a5a1cd8b87c0a8cee8e2fb07c9df4f4088e59cd\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/9a5a1cd8b87c0a8cee8e2fb07c9df4f4088e59cd\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclouddeploy:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/92270421dad5b1cdd1de7c9bed8a3570c396ca93\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/92270421dad5b1cdd1de7c9bed8a3570c396ca93\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudkms:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/f3f0ad25b33f0811a524a414f93a80dc9b2f9a32\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/f3f0ad25b33f0811a524a414f93a80dc9b2f9a32\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudsearch:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/a26acd7ac001905649b2c913129fb3ed7a0ed567\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/a26acd7ac001905649b2c913129fb3ed7a0ed567\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecloudtasks:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/2af118b3c0fa958e8954f7fced6e2218214a66c0\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/2af118b3c0fa958e8954f7fced6e2218214a66c0\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8e83dc996f64254ce826d59d32abba9ce22f7789\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8e83dc996f64254ce826d59d32abba9ce22f7789\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ecompute:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/da8c35f88c21181d8d46ed699e6166062b3250f4\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/da8c35f88c21181d8d46ed699e6166062b3250f4\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econfig:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b4fa3f2f6e1c1437270e2fd4cdb5d77be085606a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b4fa3f2f6e1c1437270e2fd4cdb5d77be085606a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econnectors:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/78dece310ddbc068cafb7877ea7b9c51ba00465d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/78dece310ddbc068cafb7877ea7b9c51ba00465d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtactcenterinsights:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/76bc2b43080e4eb98b149869c43c383e4133c884\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/76bc2b43080e4eb98b149869c43c383e4133c884\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtaineranalysis:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/03b49af4aa6dbd4b0b34c1aa3db5a607c660f37a\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/03b49af4aa6dbd4b0b34c1aa3db5a607c660f37a\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtaineranalysis:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b1c7a26316b7d00752c4012ede0d65632fd63faf\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b1c7a26316b7d00752c4012ede0d65632fd63faf\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/0b40ba83f99859afd3a58ebcc20bfda6bc484b7f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/0b40ba83f99859afd3a58ebcc20bfda6bc484b7f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/120be612dc45186c77091d671c167deb73c0740f\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/120be612dc45186c77091d671c167deb73c0740f\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003econtainer:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d47e46693a4d760502e0f576884ef01c8836b45c\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d47e46693a4d760502e0f576884ef01c8836b45c\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/820112c5fdea8506ed88cc149e558e6a2a1a585d\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/820112c5fdea8506ed88cc149e558e6a2a1a585d\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003eb6b55b6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/8ccc149637c65d8e5ed1a89ee5ca43c029b02fc4\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/8ccc149637c65d8e5ed1a89ee5ca43c029b02fc4\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataform:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/b260d854ef3f5dd67d37b29c91df2bc3ffc35693\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/b260d854ef3f5dd67d37b29c91df2bc3ffc35693\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edatamigration:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/308cc75c64f69e5d361b2d518638588b35a95279\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/308cc75c64f69e5d361b2d518638588b35a95279\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e4b1cfc7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edataplex:\u003c/strong\u003e Update the api \u003ca href=\"https://togithub.com/googleapis/google-api-python-client/commit/d4a71f77594865f4ca7d6793e4d886251b7ac943\"\u003ehttps://togithub.com/googleapis/google-api-python-client/commit/d4a71f77594865f4ca7d6793e4d886251b7ac943\u003c/a\u003e (\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e2d0b3b1\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/googleapis/google-api-python-client/commit/10436ecbe9201c8af9ad235a05d77e5e05e6462e\"\u003e\u003ccode\u003e10436ec\u003c/code\u003e\u003c/a\u003e chore(main): release 2.194.0 (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2733\"\u003e#2733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/2d0b3b1eb39659a172bea5fdbf99f78d094a98f9\"\u003e\u003ccode\u003e2d0b3b1\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2737\"\u003e#2737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/4b1cfc7c82a5b51aeaf39962e9b793a445e1a14f\"\u003e\u003ccode\u003e4b1cfc7\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2735\"\u003e#2735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/a82af07571da6c3c0ccfd2d9cf234785c3783e57\"\u003e\u003ccode\u003ea82af07\u003c/code\u003e\u003c/a\u003e chore: Migrate gsutil usage to gcloud storage (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2705\"\u003e#2705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-api-python-client/commit/b6b55b68cb84e98c0feaac31d2c67ad84d61094e\"\u003e\u003ccode\u003eb6b55b6\u003c/code\u003e\u003c/a\u003e chore: Update discovery artifacts (\u003ca href=\"https://redirect.github.com/googleapis/google-api-python-client/issues/2732\"\u003e#2732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/google-api-python-client/compare/v2.193.0...v2.194.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth-httplib2` from 0.3.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4e80530190d3e3d7d0dec26b8daf97c2db15c2df\"\u003e\u003ccode\u003e4e80530\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16193\"\u003e#16193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/0f8d933cfeca182e00eb589da2ab0df61579c6f1\"\u003e\u003ccode\u003e0f8d933\u003c/code\u003e\u003c/a\u003e chore: add gapic-generator integration test presubmit (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16465\"\u003e#16465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/ab44f7e4224b554e9365aafbd4ecb559ed975aa6\"\u003e\u003ccode\u003eab44f7e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency requests to v2.33.0 [security] (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16464\"\u003e#16464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/943a979f14b1f39608cdb2658823f087a599e418\"\u003e\u003ccode\u003e943a979\u003c/code\u003e\u003c/a\u003e chore(migration): Migrate code from googleapis/sphinx-docfx-yaml into package...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/8c6703da295ed30200bb38f637b745b64f34d690\"\u003e\u003ccode\u003e8c6703d\u003c/code\u003e\u003c/a\u003e chore(migration): Migrate code from googleapis/gapic-generator-python into pa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/e3731d58d5371f166e75742e257e2524d21e83cb\"\u003e\u003ccode\u003ee3731d5\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into migration.gapic-generator-python.migration.2026-03-2...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/20f57241d9f690abc31c1a19ee5a0d33c667f300\"\u003e\u003ccode\u003e20f5724\u003c/code\u003e\u003c/a\u003e Trigger CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/76a8b58e1f73328243ff838a4652bdcc4ead31b5\"\u003e\u003ccode\u003e76a8b58\u003c/code\u003e\u003c/a\u003e chore: skip spanner django presubmits using dorny filter (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16196\"\u003e#16196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/7a05a34dc0d4bd9ded9ab3ce97b5e61f2780e081\"\u003e\u003ccode\u003e7a05a34\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16191\"\u003e#16191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/46ee8a094fdb121f49fa600f91d1b8c0818a9253\"\u003e\u003ccode\u003e46ee8a0\u003c/code\u003e\u003c/a\u003e fix presubmit\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-httplib2-v0.3.0...google-auth-httplib2-v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth-oauthlib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/releases\"\u003egoogle-auth-oauthlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egrpc-google-iam-v1: v0.14.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/grpc-google-iam-v1-v0.14.3...grpc-google-iam-v1-v0.14.4\"\u003ev0.14.4\u003c/a\u003e (2026-03-31)\u003c/h2\u003e\n\u003ch2\u003egoogle-cloud-compute-v1beta: v0.10.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-compute-v1beta-v0.9.0...google-cloud-compute-v1beta-v0.10.0\"\u003ev0.10.0\u003c/a\u003e (2026-03-26)\u003c/h2\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/googleapis/google-cloud-python/blob/main/packages/gcp-sphinx-docfx-yaml/CHANGELOG.md\"\u003egoogle-auth-oauthlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://www.github.com/googleapis/sphinx-docfx-yaml/compare/v1.3.0...v1.3.1\"\u003e1.3.1\u003c/a\u003e (2021-11-15)\u003c/h3\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eresolve square bracketed references (\u003ca href=\"https://redirect.github.com/googleapis/sphinx-docfx-yaml/issues/146\"\u003e#146\u003c/a\u003e) (\u003ca href=\"https://www.github.com/googleapis/sphinx-docfx-yaml/commit/fa049ace9d14e1f9993313983ad3426ff041672d\"\u003efa049ac\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/googleapis/google-cloud-python/commit/4e80530190d3e3d7d0dec26b8daf97c2db15c2df\"\u003e\u003ccode\u003e4e80530\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16193\"\u003e#16193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/ab44f7e4224b554e9365aafbd4ecb559ed975aa6\"\u003e\u003ccode\u003eab44f7e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency requests to v2.33.0 [security] (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16464\"\u003e#16464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/943a979f14b1f39608cdb2658823f087a599e418\"\u003e\u003ccode\u003e943a979\u003c/code\u003e\u003c/a\u003e chore(migration): Migrate code from googleapis/sphinx-docfx-yaml into package...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/e3731d58d5371f166e75742e257e2524d21e83cb\"\u003e\u003ccode\u003ee3731d5\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into migration.gapic-generator-python.migration.2026-03-2...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/7a05a34dc0d4bd9ded9ab3ce97b5e61f2780e081\"\u003e\u003ccode\u003e7a05a34\u003c/code\u003e\u003c/a\u003e chore: create a release (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16191\"\u003e#16191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/c23b0670def4d049a81e073260cdd664c909e358\"\u003e\u003ccode\u003ec23b067\u003c/code\u003e\u003c/a\u003e fix typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/c174901a7dfa72268191a0212e565c7baa5b3658\"\u003e\u003ccode\u003ec174901\u003c/code\u003e\u003c/a\u003e add placeholder for system test nox session\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/0f19d85b8083b57c2e60b8cd257d3e1f419e7eed\"\u003e\u003ccode\u003e0f19d85\u003c/code\u003e\u003c/a\u003e chore: fix missing heading in changelog (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16189\"\u003e#16189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/a16755d8e2fcd941e94cc967a5acd72c95eb7644\"\u003e\u003ccode\u003ea16755d\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T111101Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16141\"\u003e#16141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/9694ce943e2b7f4729b78e80b25a6729bfb292ca\"\u003e\u003ccode\u003e9694ce9\u003c/code\u003e\u003c/a\u003e chore: librarian onboard pull request: 20260323T114549Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16143\"\u003e#16143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-auth-oauthlib-v1.3.0...google-auth-oauthlib-v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 26.0 to 26.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/packaging/releases\"\u003epackaging's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cdel\u003ePEP 783: add handling for Emscripten wheel tags by \u003ca href=\"https://github.com/hoodmane\"\u003e\u003ccode\u003e@​hoodmane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/804\"\u003epypa/packaging#804\u003c/a\u003e\u003c/del\u003e (old name used in implementation, will be fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1099\"\u003epypa/packaging#1099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1065\"\u003epypa/packaging#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/944\"\u003epypa/packaging#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1071\"\u003epypa/packaging#1071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1119\"\u003epypa/packaging#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1110\"\u003epypa/packaging#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1068\"\u003epypa/packaging#1068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1146\"\u003epypa/packaging#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1078\"\u003epypa/packaging#1078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1150\"\u003epypa/packaging#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1140\"\u003epypa/packaging#1140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026gt;V\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1141\"\u003epypa/packaging#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1125\"\u003epypa/packaging#1125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1102\"\u003epypa/packaging#1102\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd pylock \u003ccode\u003eselect\u003c/code\u003e function by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1092\"\u003epypa/packaging#1092\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument pylock \u003ccode\u003eselect()\u003c/code\u003e method and \u003ccode\u003ePylockSelectError\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1153\"\u003epypa/packaging#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003efilename\u003c/code\u003e property to \u003ccode\u003ePackageSdist\u003c/code\u003e and \u003ccode\u003ePackageWheel\u003c/code\u003e, more validation by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1095\"\u003epypa/packaging#1095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGive preference to path over url by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1128\"\u003epypa/packaging#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate name/version consistency in file names by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1114\"\u003epypa/packaging#1114\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e\u0026gt;\u003c/code\u003e comparison for versions with dev+local segments by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1097\"\u003epypa/packaging#1097\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix incorrect self-comparison for \u003ccode\u003eInfinityType\u003c/code\u003e and \u003ccode\u003eNegativeInfinityType\u003c/code\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1093\"\u003epypa/packaging#1093\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCanonicalize when deduplicating specifiers in \u003ccode\u003eSpecifierSet\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1109\"\u003epypa/packaging#1109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix charset error message formatting by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1121\"\u003epypa/packaging#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle the \u003ccode\u003ekey\u003c/code\u003e parameter in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e when specifiers are empty and prerelease is \u003ccode\u003eFalse\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1096\"\u003epypa/packaging#1096\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize inner components of \u003ccode\u003erepr\u003c/code\u003e output by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1090\"\u003epypa/packaging#1090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSpecifier\u003c/code\u003e's \u003ccode\u003e===\u003c/code\u003e uses original string, not normalized, when available by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1124\"\u003epypa/packaging#1124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePropagate int-max-str-digits \u003ccode\u003eValueError\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1155\"\u003epypa/packaging#1155\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd fast path for parsing simple versions (digits and dots only) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1082\"\u003epypa/packaging#1082\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd fast path for \u003ccode\u003eVersion\u003c/code\u003e to \u003ccode\u003eVersion\u003c/code\u003e comparison by skipping \u003ccode\u003e_key\u003c/code\u003e property by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1083\"\u003epypa/packaging#1083\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache \u003ccode\u003eVersion\u003c/code\u003e hash value in dedicated slot by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1118\"\u003epypa/packaging#1118\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOverhaul \u003ccode\u003e_cmpkey\u003c/code\u003e to remove use of custom objects by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1116\"\u003epypa/packaging#1116\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip \u003ccode\u003e__replace__\u003c/code\u003e in Specifier comparison if not needed by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1081\"\u003epypa/packaging#1081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSpecifierSet\u003c/code\u003e use \u003ccode\u003etuple\u003c/code\u003e instead of \u003ccode\u003efrozenset\u003c/code\u003e for \u003ccode\u003e_specs\u003c/code\u003e by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1108\"\u003epypa/packaging#1108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpeed up complex \u003ccode\u003eSpecifierSet\u003c/code\u003e filtering by implementing cost-based ordering by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1105\"\u003epypa/packaging#1105\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/pypa/packaging/blob/main/CHANGELOG.rst\"\u003epackaging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e26.1 - 2026-04-14\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFeatures:\n\u003cul\u003e\n\u003cli\u003ePEP 783: add handling for Emscripten wheel tags in (:pull:\u003ccode\u003e804\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag in (:pull:\u003ccode\u003e1099\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package in (:pull:\u003ccode\u003e1065\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module in (:pull:\u003ccode\u003e944\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module in (:pull:\u003ccode\u003e1071\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) in (:pull:\u003ccode\u003e1119\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags in (:pull:\u003ccode\u003e1110\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e in (:pull:\u003ccode\u003e1068\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's in (:pull:\u003ccode\u003e1146\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e in (:pull:\u003ccode\u003e1078\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e in (:pull:\u003ccode\u003e1150\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026amp;lt;V.postN\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1140\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026amp;gt;V\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1141\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private in (:pull:\u003ccode\u003e1125\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII in (:pull:\u003ccode\u003e1102\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd pylock \u003ccode\u003eselect\u003c/code\u003e function in (:pull:\u003ccode\u003e1092\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument pylock \u003ccode\u003eselect()\u003c/code\u003e method and \u003ccode\u003ePylockSelectError\u003c/code\u003e in (:pull:\u003ccode\u003e1153\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003efilename\u003c/code\u003e property to \u003ccode\u003ePackageSdist\u003c/code\u003e and \u003ccode\u003ePackageWheel\u003c/code\u003e, more validation in (:pull:\u003ccode\u003e1095\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eGive preference to path over url in (:pull:\u003ccode\u003e1128\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eValidate name/version consistency in file names in (:pull:\u003ccode\u003e1114\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e\u0026amp;gt;\u003c/code\u003e comparison for versions with dev+local segments in (:pull:\u003ccode\u003e1097\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect self-comparison for \u003ccode\u003eInfinityType\u003c/code\u003e and \u003ccode\u003eNegativeInfinityType\u003c/code\u003e in (:pull:\u003ccode\u003e1093\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCanonicalize when deduplicating specifiers in \u003ccode\u003eSpecifierSet\u003c/code\u003e in (:pull:\u003ccode\u003e1109\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix charset error message formatting in (:pull:\u003ccode\u003e1121\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eHandle the \u003ccode\u003ekey\u003c/code\u003e parameter in \u003ccode\u003eSpecifierSet.filter\u003c/code\u003e when specifiers are empty and prerelease is \u003ccode\u003eFalse\u003c/code\u003e in (:pull:\u003ccode\u003e1096\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eStandardize inner components of \u003ccode\u003erepr\u003c/code\u003e output in (:pull:\u003ccode\u003e1090\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSpecifier\u003c/code\u003e's \u003ccode\u003e===\u003c/code\u003e uses original string, not normalized, when available in (:pull:\u003ccode\u003e1124\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePropagate int-max-str-digits \u003ccode\u003eValueError\u003c/code\u003e in (:pull:\u003ccode\u003e1155\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePerformance:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd fast path for parsing simple versions (digits and dots only) in (:pull:\u003ccode\u003e1082\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast path for \u003ccode\u003eVersion\u003c/code\u003e to \u003ccode\u003eVersion\u003c/code\u003e comparison by skipping \u003ccode\u003e_key\u003c/code\u003e property in (:pull:\u003ccode\u003e1083\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eCache \u003ccode\u003eVersion\u003c/code\u003e hash value in dedicated slot in (:pull:\u003ccode\u003e1118\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eOverhaul \u003ccode\u003e_cmpkey\u003c/code\u003e to remove use of custom objects in (:pull:\u003ccode\u003e1116\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSkip \u003ccode\u003e__replace__\u003c/code\u003e in Specifier comparison if not needed in (:pull:\u003ccode\u003e1081\u003c/code\u003e)\u003cbr /\u003e\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\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/packaging/commit/c1a88a3e035e8bfe47dbc957f4a2493e8a7b4f3c\"\u003e\u003ccode\u003ec1a88a3\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/702c25ecc297054f9597acda987a75dd6833acf5\"\u003e\u003ccode\u003e702c25e\u003c/code\u003e\u003c/a\u003e docs: update changelog for 26.1 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1156\"\u003e#1156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3f4f5d46808f51709aba8341d4121f20752b3235\"\u003e\u003ccode\u003e3f4f5d4\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003eis_unsatisfiable\u003c/code\u003e on \u003ccode\u003eSpecifierSet\u003c/code\u003e using ranges (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1119\"\u003e#1119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/06c6555f44f0f7b84459c876375c5b1d52ee7fef\"\u003e\u003ccode\u003e06c6555\u003c/code\u003e\u003c/a\u003e Propagate int-max-str-digits ValueError (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1155\"\u003e#1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/905c90c1eb8c77dede11899194ca4b0f5eaf188d\"\u003e\u003ccode\u003e905c90c\u003c/code\u003e\u003c/a\u003e feat: option to validate compressed tag set sort order in `parse_wheel_filena...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/af0026cff97a8f28d165d6ac4afb58b2cdc8ffc5\"\u003e\u003ccode\u003eaf0026c\u003c/code\u003e\u003c/a\u003e docs(pylock): document select() method and PylockSelectError (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1153\"\u003e#1153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/668da8662a112036e4850b68980790cb2d10dae9\"\u003e\u003ccode\u003e668da86\u003c/code\u003e\u003c/a\u003e Rename format_full_version to _format_full_version to make it visibly private...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f294d529e2634798a98fd9cee6708307a5c1792c\"\u003e\u003ccode\u003ef294d52\u003c/code\u003e\u003c/a\u003e tests: do not reload the tags module (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1152\"\u003e#1152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/2c6c7dfa2d406e44b91f3f8d26eeed72437c9435\"\u003e\u003ccode\u003e2c6c7df\u003c/code\u003e\u003c/a\u003e feat: add handling for Emscripten wheels tags per PEP 783 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/804\"\u003e#804\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/6762eea4de40da02c119d02cc77c907c6b446b86\"\u003e\u003ccode\u003e6762eea\u003c/code\u003e\u003c/a\u003e docs(markers): document \u0026amp; and | operators for combining Marker objects (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1151\"\u003e#1151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/26.0...26.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prek` from 0.3.6 to 0.3.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/j178/prek/releases\"\u003eprek's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.9\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-13.\u003c/p\u003e\n\u003ch3\u003eHighlight\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eprek auto-update\u003c/code\u003e is now stricter about pinned revisions and more useful in CI.\nIt now keeps \u003ccode\u003erev\u003c/code\u003e and \u003ccode\u003e# frozen:\u003c/code\u003e comments in sync, can detect\n\u003ca href=\"https://docs.zizmor.sh/audits/#impostor-commit\"\u003eimpostor commits\u003c/a\u003e when validating pinned SHAs,\nand lets you use \u003ccode\u003eprek auto-update --check\u003c/code\u003e to fail on both available updates and frozen-ref\nmismatches without rewriting the config.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e$ prek auto-update\n# updates revs and repairs stale `# frozen:` comments\n\u003cp\u003e$ prek auto-update --freeze\u003c/p\u003e\n\u003ch1\u003ewrites frozen SHAs with matching \u003ccode\u003e# frozen: \u0026amp;lt;tag\u0026amp;gt;\u003c/code\u003e comments\u003c/h1\u003e\n\u003cp\u003e$ prek auto-update --check\u003c/p\u003e\n\u003ch1\u003eexits non-zero when updates are available, a \u003ccode\u003e# frozen:\u003c/code\u003e comment is stale,\u003c/h1\u003e\n\u003ch1\u003eor a pinned SHA does not belong to the fetched upstream refs\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCheck and sync frozen comments during auto-update (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1896\"\u003e#1896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle impostor commits in auto-update (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1919\"\u003e#1919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003elanguage: dotnet\u003c/code\u003e support (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1871\"\u003e#1871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHonor repo and worktree \u003ccode\u003ecore.hooksPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1892\"\u003e#1892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek run --no-fail-fast\u003c/code\u003e to override config file (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1859\"\u003e#1859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eforbid-new-submodules\u003c/code\u003e as builtin hook (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1853\"\u003e#1853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean stale patch files in \u003ccode\u003ecache gc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1877\"\u003e#1877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisplay auto-update results by config entry (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1922\"\u003e#1922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict patch directory permissions (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1876\"\u003e#1876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow tag names in \u003ccode\u003eauto-update --freeze\u003c/code\u003e output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1916\"\u003e#1916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a bitset for hook stages (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1860\"\u003e#1860\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalize CWD and GIT_ROOT paths (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1878\"\u003e#1878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure quotes are added for non-string revisions in \u003ccode\u003eauto-update\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1936\"\u003e#1936\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs for case of hooks modifying files with a non-zero exit code (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1879\"\u003e#1879\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/j178/prek/blob/master/CHANGELOG.md\"\u003eprek's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.3.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-13.\u003c/p\u003e\n\u003ch3\u003eHighlight\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eprek auto-update\u003c/code\u003e is now stricter about pinned revisions and more useful in CI.\nIt now keeps \u003ccode\u003erev\u003c/code\u003e and \u003ccode\u003e# frozen:\u003c/code\u003e comments in sync, can detect\n\u003ca href=\"https://docs.zizmor.sh/audits/#impostor-commit\"\u003eimpostor commits\u003c/a\u003e when validating pinned SHAs,\nand lets you use \u003ccode\u003eprek auto-update --check\u003c/code\u003e to fail on both available updates and frozen-ref\nmismatches without rewriting the config.\u003c/p\u003e\n\u003cp\u003eExamples:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e$ prek auto-update\n# updates revs and repairs stale `# frozen:` comments\n\u003cp\u003e$ prek auto-update --freeze\u003c/p\u003e\n\u003ch1\u003ewrites frozen SHAs with matching \u003ccode\u003e# frozen: \u0026amp;lt;tag\u0026amp;gt;\u003c/code\u003e comments\u003c/h1\u003e\n\u003cp\u003e$ prek auto-update --check\u003c/p\u003e\n\u003ch1\u003eexits non-zero when updates are available, a \u003ccode\u003e# frozen:\u003c/code\u003e comment is stale,\u003c/h1\u003e\n\u003ch1\u003eor a pinned SHA does not belong to the fetched upstream refs\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCheck and sync frozen comments during auto-update (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1896\"\u003e#1896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle impostor commits in auto-update (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1919\"\u003e#1919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003elanguage: dotnet\u003c/code\u003e support (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1871\"\u003e#1871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHonor repo and worktree \u003ccode\u003ecore.hooksPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1892\"\u003e#1892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eprek run --no-fail-fast\u003c/code\u003e to override config file (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1859\"\u003e#1859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eforbid-new-submodules\u003c/code\u003e as builtin hook (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1853\"\u003e#1853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean stale patch files in \u003ccode\u003ecache gc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1877\"\u003e#1877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisplay auto-update results by config entry (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1922\"\u003e#1922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict patch directory permissions (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1876\"\u003e#1876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eShow tag names in \u003ccode\u003eauto-update --freeze\u003c/code\u003e output (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1916\"\u003e#1916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a bitset for hook stages (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1860\"\u003e#1860\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCanonicalize CWD and GIT_ROOT paths (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1878\"\u003e#1878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure quotes are added for non-string revisions in \u003ccode\u003eauto-update\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1936\"\u003e#1936\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs for case of hooks modifying files with a non-zero exit code (\u003ca href=\"https://redirect.github.com/j178/prek/pull/1879\"\u003e#1879\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/3a9b9fe4ac5f202ca0202d195c3ba5ce4c9bb81c\"\u003e\u003ccode\u003e3a9b9fe\u003c/code\u003e\u003c/a\u003e Ensure quotes are added for non-string revisions in \u003ccode\u003eauto-update\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1936\"\u003e#1936\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/501d1db943dbf7369e5b082930641f48147481f0\"\u003e\u003ccode\u003e501d1db\u003c/code\u003e\u003c/a\u003e Bump version to 0.3.9 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1934\"\u003e#1934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/dc98c4792d2f6cf53d7b2fda2a3b13fb9ccc5feb\"\u003e\u003ccode\u003edc98c47\u003c/code\u003e\u003c/a\u003e Honor repo and worktree \u003ccode\u003ecore.hooksPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1892\"\u003e#1892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/08c1f706ce69889c59533921f19fdff6eb579711\"\u003e\u003ccode\u003e08c1f70\u003c/code\u003e\u003c/a\u003e Remove bracket from auto-update project header (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1933\"\u003e#1933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/4292fe245bfe53caa01dac998d703a2c03f1d13d\"\u003e\u003ccode\u003e4292fe2\u003c/code\u003e\u003c/a\u003e Update pre-commit hook crate-ci/typos to v1.45.0 (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1930\"\u003e#1930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j178/prek/commit/adafad090353056980fdefddc9d1cb92755b1f9d\"\u003e\u003ccode\u003eadafad0\u003c/code\u003e\u003c/a\u003e Update GitHub Actions (\u003ca href=\"https://redirect.github.com/j178/prek/issues/1929\"\u003e#1929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"h...\n\n_Description has been truncated_","html_url":"https://github.com/gopidesupavan/airflow-cod/pull/36","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gopidesupavan%2Fairflow-cod/issues/36","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/36/packages"}},{"old_version":"\u003c3.0.0,\u003e=2.1.1","new_version":"\u003e=2.9.1,\u003c3.0.0","update_type":"minor","path":null,"pr_created_at":"2026-04-20T10:05:33.000Z","version_change":"\u003c3.0.0,\u003e=2.1.1 → \u003e=2.9.1,\u003c3.0.0","issue":{"uuid":"4294830246","node_id":"PR_kwDOPf23ns7T51N0","number":4011,"state":"open","title":"deps(deps-dev): Update pygithub requirement from \u003c3.0.0,\u003e=2.1.1 to \u003e=2.9.1,\u003c3.0.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":12,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-20T10:05:33.000Z","updated_at":"2026-04-20T12:08:29.569Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps-dev): Update","packages":[{"name":"pygithub","old_version":"\u003c3.0.0,\u003e=2.1.1","new_version":"\u003e=2.9.1,\u003c3.0.0","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [pygithub](https://github.com/pygithub/pygithub) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.1.1...v2.9.1\"\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 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\n---\n\n## 🔄 Workflow Execution Checklist\n\n### ✅ Always Required — fire automatically on every push (cannot be skipped)\n- [x] pre-merge-validation.yml — Pre-merge checks (always required)\n- [x] comment-review-gate.yml — Comment review gate (always required)\n- [x] deferral-language-gate.yml — Deferral language guard (always required)\n- [x] agent-auth-delegation.yml — Agent token delegation (always required)\n- [x] workflow-execution-gate.yml — WEC gate — parse checklist \u0026 arm allowed workflows (always required)\n\n### 🔄 Always Active — fire via push/workflow_run (need approval in Actions tab)\n- [x] copilot-agent-checkin.yml — Agent check-in / S221 guard (fires on push)\n- [x] copilot-agent-session-done.yml — Auto-post @copilot review after agent session (fires on workflow_run)\n- [x] copilot-iterative-self-healing.yml — Iterative self-healing CI loop (fires on workflow_run — needs approval)\n- [x] cost-gate.yml — Cost governance gate (called by agent-auth-delegation)\n\n### ⚡ Auto-Approve\n- [ ] auto-approve-workflows — Auto-Approve workflow to run (approves all pending runs on last commit SHA)\n\n### 🧪 Opt-In: Testing \u0026 Validation\n- [ ] validate.yml — Validation Pipeline (detect-secrets, ruff, pre-commit, sync-tracked)\n- [ ] resilient_validation.yml — Resilient Validation Suite (full pytest, 4 shards)\n- [ ] test-rag.yml — RAG Module Tests (coverage ≥95%)\n- [ ] nox_gates.yml — Nox quality gates (ruff, mypy, coverage)\n- [x] mypy-baseline.yml — mypy type-check anti-regression gate\n- [x] coverage-with-timeout.yml — Coverage with timeout guards\n- [ ] progressive-validation.yml — Progressive Validation Suite\n- [x] pre-flight-validation.yml — Pre-flight CI validation\n- [x] ci-checkpoint-validation.yml — CI Checkpoint Validation\n- [ ] data-quality-suite.yml — Data Quality \u0026 Determinism Suite\n- [x] auth-tests.yml — Authentication Tests\n- [x] pr-checks.yml — PR Checks (isolated cache, src/ scope)\n- [ ] html_visual_regression.yml — HTML Visual Regression Screenshots\n\n### 🔒 Opt-In: Security \u0026 Quality\n- [ ] security-scanning-suite.yml — Full security audit (bandit, pip-audit)\n- [x] codeql-analysis.yml — CodeQL SAST analysis\n- [x] actionlint-audit.yml — Workflow compliance audit (actionlint)\n- [x] semgrep_sarif.yml — Semgrep SAST (SARIF upload)\n- [x] auto-fix-common-issues.yml — Auto-Fix Common CI Issues\n- [x] auto-fix-pr-check.yml — PR Auto-Fix Check\n- [x] code-quality-coverage-suite.yml — Code Quality \u0026 Coverage Suite\n- [x] audit-qa-suite.yml — Audit \u0026 QA Suite (Unified)\n\n### 📄 Opt-In: Documentation\n- [ ] documentation-link-checker.yml — Documentation link checker\n- [x] pages-pre-merge-validation.yml — Pages pre-merge validation\n\n### ⚙️ Opt-In: Infrastructure \u0026 Deployment\n- [x] reference-integrity.yml — Reference integrity + agent size gate\n- [x] dependency-submission.yml — Resilient dependency submission\n- [ ] docker-build-push.yml — Build \u0026 push Docker image (GHCR)\n- [ ] rust_swarm_ci.yml — Rust-Python hybrid swarm CI/CD\n- [x] root-org-validation.yml — Root organization validation\n- [x] agent-registry-validation.yml — Agent registry validation\n- [x] qa-walkthrough.yml — QA walkthrough agent\n\n\u003e **⚠️ HARDENED AGENT INSTRUCTION (non-negotiable):** This entire WEC block MUST be\n\u003e appended verbatim to **every** PR body update — including every `report_progress` call.\n\u003e Copy the WEC block from the current PR body into the `prDescription` parameter, keeping\n\u003e **all previously-checked `[x]` items checked**. Never reset a maintainer selection to `[ ]`.\n\u003e Only 'always required' items may be auto-checked. All other items preserve their current state.\n","html_url":"https://github.com/Aries-Serpent/_codex_/pull/4011","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aries-Serpent%2F_codex_/issues/4011","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4011/packages"}},{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":null,"pr_created_at":"2026-04-20T06:56:57.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"4293699389","node_id":"PR_kwDOOuks_87T2Le6","number":206,"state":"open","title":"chore: bump the patch-updates group with 6 updates","user":"dependabot[bot]","labels":["ignore-for-release","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-20T06:56:57.000Z","updated_at":"2026-04-20T06:58:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"patch-updates","update_count":6,"packages":[{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"mypy","old_version":"1.20.0","new_version":"1.20.1","repository_url":"https://github.com/python/mypy"},{"name":"ruff","old_version":"0.15.9","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"commitizen","old_version":"4.13.9","new_version":"4.13.10","repository_url":"https://github.com/commitizen-tools/commitizen"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"fastmcp","old_version":"3.2.0","new_version":"3.2.4","repository_url":"https://github.com/PrefectHQ/fastmcp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-updates group with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [mypy](https://github.com/python/mypy) | `1.20.0` | `1.20.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.9` | `0.15.11` |\n| [commitizen](https://github.com/commitizen-tools/commitizen) | `4.13.9` | `4.13.10` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.9.1` |\n| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.2.0` | `3.2.4` |\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 `mypy` from 1.20.0 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.20.0...v1.20.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.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 `commitizen` from 4.13.9 to 4.13.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/b5d5040f7980a5d2bce320d2a1ea1e04ac54b00c\"\u003e\u003ccode\u003eb5d5040\u003c/code\u003e\u003c/a\u003e bump: version 4.13.9 → 4.13.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/4879df32b6aa7dc09dd19dffc3f2a68d7ea7666e\"\u003e\u003ccode\u003e4879df3\u003c/code\u003e\u003c/a\u003e ci(bump): fix email generation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/70c0c1f4cf055eb0a28637cc6a260353c531e496\"\u003e\u003ccode\u003e70c0c1f\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/8eff9819bdb74b429cac7d70d44726bef6077600\"\u003e\u003ccode\u003e8eff981\u003c/code\u003e\u003c/a\u003e ci: fix email for commitizenbot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/61926a771ba9d560a8d3a9e994a355b53b544dee\"\u003e\u003ccode\u003e61926a7\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/042a089ab11db863d06021548909d1eb8c845250\"\u003e\u003ccode\u003e042a089\u003c/code\u003e\u003c/a\u003e fix(ci): use commitizen bot to push tags and commits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/a06ce0cb656f5b053fb1bc3bcafcde85ee4241e1\"\u003e\u003ccode\u003ea06ce0c\u003c/code\u003e\u003c/a\u003e docs(cli/screenshots): update CLI screenshots\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/97fb356d59a31a55b31eefb5d92cc1028bee25b8\"\u003e\u003ccode\u003e97fb356\u003c/code\u003e\u003c/a\u003e ci: use setup-cz\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/9abbdbda0c3edb42062e9f66467e1c4b85ab5591\"\u003e\u003ccode\u003e9abbdbd\u003c/code\u003e\u003c/a\u003e fix(init): set semver2 as default if not python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/commitizen-tools/commitizen/commit/33b69c33e44ed52eb55f1e5fd488ec375052d733\"\u003e\u003ccode\u003e33b69c3\u003c/code\u003e\u003c/a\u003e docs: improve readability\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/commitizen-tools/commitizen/compare/v4.13.9...v4.13.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.9.0 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastmcp` from 3.2.0 to 3.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PrefectHQ/fastmcp/releases\"\u003efastmcp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.4: Patch Me If You Can\u003c/h2\u003e\n\u003cp\u003eA grab bag of fixes, hardening, and polish.\u003c/p\u003e\n\u003cp\u003eThe headline behavior change: background tasks are now scoped to the authorization context rather than the MCP session, so a task kicked off by an authenticated user survives session churn and stays tied to who started it. This is a breaking change for anyone relying on the old session-scoped semantics.\u003c/p\u003e\n\u003cp\u003eSecurity got three meaningful upgrades. \u003ccode\u003eFileUpload\u003c/code\u003e now validates actual decoded base64 size instead of trusting the client-reported number, so an attacker can't claim \u0026quot;10 bytes\u0026quot; and deliver 10MB. The proxy client stops forwarding inbound HTTP headers to unrelated remote servers — previously a header meant for server A could leak to server B. And AuthKit now auto-binds token audience to the resource URL per RFC 8707, closing a token-reuse gap across MCP resources.\u003c/p\u003e\n\u003cp\u003eSchema handling had a rough-edges pass. \u003ccode\u003ejson_schema_to_type\u003c/code\u003e no longer crashes on Python keywords, boolean schemas, empty enums, or name collisions, and we added a 232K-schema crash test from APIs.guru to keep it honest. Gemini 2.5 Flash compatibility is fixed by stripping \u003ccode\u003etitle\u003c/code\u003e fields the model rejects. Parameter descriptions are now extracted from docstrings automatically, so your tool signatures document themselves.\u003c/p\u003e\n\u003cp\u003ePlus a Keycloak OAuth provider for enterprise auth, improvements to \u003ccode\u003ectx.elicit()\u003c/code\u003e (new \u003ccode\u003eresponse_title\u003c/code\u003e/\u003ccode\u003eresponse_description\u003c/code\u003e, deprecation warning when called without \u003ccode\u003eresponse_type\u003c/code\u003e), and dozens of smaller fixes across transforms, retry middleware, resource templates, and client disconnect handling.\u003c/p\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\u003eScope tasks to authorization context, not session by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3800\"\u003ePrefectHQ/fastmcp#3800\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump pydocket\u0026gt;=0.19.0, drop fakeredis pin by \u003ca href=\"https://github.com/chrisguidry\"\u003e\u003ccode\u003e@​chrisguidry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3822\"\u003ePrefectHQ/fastmcp#3822\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd real-world schema crash test (232K schemas from APIs.guru) by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3826\"\u003ePrefectHQ/fastmcp#3826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 7 zero-violation ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3841\"\u003ePrefectHQ/fastmcp#3841\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePromote 7 ty rules from ignore to warn by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3852\"\u003ePrefectHQ/fastmcp#3852\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace ___ with hash-based backend tool routing and per-tool prefab resources by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3824\"\u003ePrefectHQ/fastmcp#3824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 4 ruff rules (DTZ, ERA, ISC, INP) and fix 9 violations by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3842\"\u003ePrefectHQ/fastmcp#3842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract parameter descriptions from docstrings by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3872\"\u003ePrefectHQ/fastmcp#3872\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: speed up schema crash test (CSafeLoader + xdist-safe aggregation) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3873\"\u003ePrefectHQ/fastmcp#3873\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: bump OpenAPI init perf threshold to 200ms for Windows CI by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3879\"\u003ePrefectHQ/fastmcp#3879\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: unify object-schema conversion through _object_schema_to_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3884\"\u003ePrefectHQ/fastmcp#3884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Keycloak OAuth Provider for Enterprise Authentication and local dev by \u003ca href=\"https://github.com/stephaneberle9\"\u003e\u003ccode\u003e@​stephaneberle9\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/1937\"\u003ePrefectHQ/fastmcp#1937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow auth providers to override protected resource base URLs by \u003ca href=\"https://github.com/aaazzam\"\u003e\u003ccode\u003e@​aaazzam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3900\"\u003ePrefectHQ/fastmcp#3900\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable PERF and T20 ruff rules by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3845\"\u003ePrefectHQ/fastmcp#3845\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd response_title and response_description to ctx.elicit() by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3912\"\u003ePrefectHQ/fastmcp#3912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeprecate ctx.elicit() without response_type by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3916\"\u003ePrefectHQ/fastmcp#3916\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity 🔒\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate actual base64 data size in FileUpload, not client-reported size by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3816\"\u003ePrefectHQ/fastmcp#3816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop forwarding inbound HTTP headers to unrelated remote servers by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3837\"\u003ePrefectHQ/fastmcp#3837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAuthKit: auto-bind token audience to resource URL (RFC 8707) by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3905\"\u003ePrefectHQ/fastmcp#3905\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes 🐞\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVersion-check is_docket_available() to avoid transitive pydocket crash by \u003ca href=\"https://github.com/jlowin\"\u003e\u003ccode\u003e@​jlowin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3807\"\u003ePrefectHQ/fastmcp#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: materialize generators before result conversion, handle bytes gracefully by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3830\"\u003ePrefectHQ/fastmcp#3830\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix json_schema_to_type crashes on keywords, boolean schemas, empty enums, and name collisions by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3818\"\u003ePrefectHQ/fastmcp#3818\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: replace \u003ccode\u003eor\u003c/code\u003e with \u003ccode\u003eis not None\u003c/code\u003e checks for config/override merging by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3833\"\u003ePrefectHQ/fastmcp#3833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: TransformedTool sync fn crash and schema mutation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3823\"\u003ePrefectHQ/fastmcp#3823\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: cross-provider duplicate detection, error visibility, mask propagation by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3827\"\u003ePrefectHQ/fastmcp#3827\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't pass HTTP kwargs when transport is unspecified by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3838\"\u003ePrefectHQ/fastmcp#3838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: strip title fields from tool schemas for Gemini 2.5 Flash compatibility by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3861\"\u003ePrefectHQ/fastmcp#3861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: retry when LLM returns text instead of calling final_response by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3850\"\u003ePrefectHQ/fastmcp#3850\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise on unhandled content types in sampling handler dispatch chains by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3857\"\u003ePrefectHQ/fastmcp#3857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken code examples in docs by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3869\"\u003ePrefectHQ/fastmcp#3869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: GoogleGenaiSamplingHandler leaks thought parts and gives unhelpful errors on empty responses by \u003ca href=\"https://github.com/strawgate\"\u003e\u003ccode\u003e@​strawgate\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/pull/3849\"\u003ePrefectHQ/fastmcp#3849\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/PrefectHQ/fastmcp/commit/7d7607473d7713d9937cbbbe0bfc635976c511d3\"\u003e\u003ccode\u003e7d76074\u003c/code\u003e\u003c/a\u003e Stop pydantic 2.13 from leaking _WrappedResult docstring into tool output sch...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/b732a4a516e4a41f053e46dbd86e9520cf5178bf\"\u003e\u003ccode\u003eb732a4a\u003c/code\u003e\u003c/a\u003e Overhaul apps docs (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3915\"\u003e#3915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/5c2ff1bd7b9844a3891149741de56a5e4d24621d\"\u003e\u003ccode\u003e5c2ff1b\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3914\"\u003e#3914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/f4f2ec07fbb611a25ce27e1b4f9b67f54bc2420a\"\u003e\u003ccode\u003ef4f2ec0\u003c/code\u003e\u003c/a\u003e Deprecate ctx.elicit() without response_type (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/338b80c3ae3b8c5ac3a7e094178c9f34eb286ea8\"\u003e\u003ccode\u003e338b80c\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 2 directories with 1 update (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3913\"\u003e#3913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/110cd3adcb7a433923ed8ed4a8b23d076a313ab5\"\u003e\u003ccode\u003e110cd3a\u003c/code\u003e\u003c/a\u003e Add response_title and response_description to ctx.elicit() (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/311784617639d7b46490d863f2e4bb24be6361c5\"\u003e\u003ccode\u003e3117846\u003c/code\u003e\u003c/a\u003e chore: Update SDK documentation (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3909\"\u003e#3909\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/031c7e03b48330345bc4d1f82a9cc78ed269b07c\"\u003e\u003ccode\u003e031c7e0\u003c/code\u003e\u003c/a\u003e Fix RetryMiddleware not retrying tool errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3858\"\u003e#3858\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/200d79e7d28f36b36c271621d9550aa3fb3c0aa7\"\u003e\u003ccode\u003e200d79e\u003c/code\u003e\u003c/a\u003e Enable PERF and T20 ruff rules (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/fastmcp/commit/82f310fe61dba25de34f2be3e203555ccfc4181d\"\u003e\u003ccode\u003e82f310f\u003c/code\u003e\u003c/a\u003e AuthKit: auto-bind token audience to resource URL (RFC 8707) (\u003ca href=\"https://redirect.github.com/PrefectHQ/fastmcp/issues/3905\"\u003e#3905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/fastmcp/compare/v3.2.0...v3.2.4\"\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/elementsinteractive/lgtm-ai/pull/206","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/elementsinteractive%2Flgtm-ai/issues/206","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/206/packages"}},{"old_version":"2.8.1","new_version":"2.9.1","update_type":"minor","path":null,"pr_created_at":"2026-04-20T00:10:38.000Z","version_change":"2.8.1 → 2.9.1","issue":{"uuid":"4292392121","node_id":"PR_kwDOFvSVkM7TyD_g","number":331,"state":"closed","title":"Bump the python group across 1 directory with 25 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-27T00:09:18.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-20T00:10:38.000Z","updated_at":"2026-04-27T00:09:19.000Z","time_to_close":604720,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":25,"packages":[{"name":"pillow","old_version":"12.1.1","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"redis","old_version":"7.3.0","new_version":"7.4.0","repository_url":"https://github.com/redis/redis-py"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"pygithub","old_version":"2.8.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"django","old_version":"5.2.12","new_version":"5.2.13","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.15.0","new_version":"65.16.1","repository_url":"https://github.com/sponsors/pennersr"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.41.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.41.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.41.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-django","old_version":"0.61b0","new_version":"0.62b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-psycopg2","old_version":"0.61b0","new_version":"0.62b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"django-anymail","old_version":"14.0","new_version":"15.0","repository_url":"https://github.com/anymail/django-anymail"},{"name":"werkzeug","old_version":"3.1.6","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"django-stubs","old_version":"5.2.9","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.15.6","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"django-debug-toolbar","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-coverage-plugin","old_version":"3.2.0","new_version":"3.2.2","repository_url":"https://github.com/coveragepy/django_coverage_plugin"},{"name":"rust-just","old_version":"1.47.0","new_version":"1.49.0","repository_url":"https://github.com/gnpaone/rust-just"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 25 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.1` | `12.2.0` |\n| [redis](https://github.com/redis/redis-py) | `7.3.0` | `7.4.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.3.1` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.8.1` | `2.9.1` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260408` |\n| [django](https://github.com/django/django) | `5.2.12` | `5.2.13` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.15.0` | `65.16.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.0` |\n| [opentelemetry-instrumentation-django](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b0` |\n| [opentelemetry-instrumentation-psycopg2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `14.0` | `15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.6` | `3.1.8` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `5.2.9` | `6.0.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.6` | `0.15.11` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `6.2.0` | `6.3.0` |\n| [django-coverage-plugin](https://github.com/coveragepy/django_coverage_plugin) | `3.2.0` | `3.2.2` |\n| [rust-just](https://github.com/gnpaone/rust-just) | `1.47.0` | `1.49.0` |\n\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 `redis` from 7.3.0 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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/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\u003eSee full diff in \u003ca href=\"https://github.com/redis/redis-py/compare/v7.3.0...v7.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release fixes a compatibility issue with Python 3.15:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/pull/218\"\u003eredis/hiredis-py#218\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/3cb8f069006f7138620b065fba973ccc490bde3d\"\u003e\u003ccode\u003e3cb8f06\u003c/code\u003e\u003c/a\u003e Version 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/2836c965d28606fecfc8989059edb36a0c4fb320\"\u003e\u003ccode\u003e2836c96\u003c/code\u003e\u003c/a\u003e MNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.0...v3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10151\"\u003ecelery/celery#10151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove on_after_finalize signal documentation by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10155\"\u003ecelery/celery#10155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-commutative example to clarify partial arg ordering in canvas docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10157\"\u003ecelery/celery#10157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant test_isa_mapping test (fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10077\"\u003e#10077\u003c/a\u003e) by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10103\"\u003ecelery/celery#10103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10162\"\u003ecelery/celery#10162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated args from redis get_connection call by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10036\"\u003ecelery/celery#10036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/celery/celery/issues/6912\"\u003e#6912\u003c/a\u003e rpc backend reconnection error by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10179\"\u003ecelery/celery#10179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) by \u003ca href=\"https://github.com/drichardson\"\u003e\u003ccode\u003e@​drichardson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10165\"\u003ecelery/celery#10165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit by \u003ca href=\"https://github.com/tsangwailam\"\u003e\u003ccode\u003e@​tsangwailam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10181\"\u003ecelery/celery#10181\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix O(K²) message bloat in a chain of chords by \u003ca href=\"https://github.com/Borzik\"\u003e\u003ccode\u003e@​Borzik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10171\"\u003ecelery/celery#10171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mock connection interfaces to prevent \u003ccode\u003eTypeError\u003c/code\u003e during exception handling by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10178\"\u003ecelery/celery#10178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks by \u003ca href=\"https://github.com/aurangzaib048\"\u003e\u003ccode\u003e@​aurangzaib048\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10159\"\u003ecelery/celery#10159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003ereconnect_on_error\u003c/code\u003e to \u003ccode\u003eBaseResultConsumer\u003c/code\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10189\"\u003ecelery/celery#10189\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epep 649 by \u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10187\"\u003ecelery/celery#10187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix#9722 friendly status errors for CLI by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10190\"\u003ecelery/celery#10190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify after_return behavior for retried tasks by \u003ca href=\"https://github.com/KianAnbarestani\"\u003e\u003ccode\u003e@​KianAnbarestani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10192\"\u003ecelery/celery#10192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd compression header to message protocol docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10156\"\u003ecelery/celery#10156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated word in bootsteps comment by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10153\"\u003ecelery/celery#10153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove outdated autoreloader section from extending docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10154\"\u003ecelery/celery#10154\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/celery/celery/blob/v5.6.3/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.3\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-03-26\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix Django worker recursion bug + defensive checks for pool_cls.__module__ ([#10048](https://github.com/celery/celery/issues/10048))\n- Docs: Update user_preload_options example to use click. ([#10056](https://github.com/celery/celery/issues/10056))\n- Fix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo ([#10060](https://github.com/celery/celery/issues/10060))\n- Fix broken images on PyPI page ([#10066](https://github.com/celery/celery/issues/10066))\n- Remove broken reference. ([#10071](https://github.com/celery/celery/issues/10071))\n- Removed --dist=loadscope from smoke tests ([#10073](https://github.com/celery/celery/issues/10073))\n- Docs: Clarify task_retry signal args may be None ([#10076](https://github.com/celery/celery/issues/10076))\n- Update example for Django ([#10081](https://github.com/celery/celery/issues/10081))\n- Make tests compatible with pymongo \u0026gt;= 4.16 ([#10074](https://github.com/celery/celery/issues/10074))\n- fix: source install of cassandra-driver ([#10105](https://github.com/celery/celery/issues/10105))\n- fix: register task cross-reference role in Sphinx extension ([#10100](https://github.com/celery/celery/issues/10100))\n- fix: avoid cycle detection in native delayed delivery ([#10095](https://github.com/celery/celery/issues/10095))\n- fix(asynpool): avoid AttributeError when proc lacks _sentinel_poll ([#10086](https://github.com/celery/celery/issues/10086))\n- fix dusk_astronomical horizon sign (+18 -\u0026gt; -18) ([#10121](https://github.com/celery/celery/issues/10121))\n- Fix/10106 onupdate col use lambda func ([#10108](https://github.com/celery/celery/issues/10108))\n- Fix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 ([#10083](https://github.com/celery/celery/issues/10083)) ([#10123](https://github.com/celery/celery/issues/10123))\n- Fix 10109 db backend connection health ([#10124](https://github.com/celery/celery/issues/10124))\n- Database Backend filter unsupport sql engine arguments with nullpool [#7355](https://github.com/celery/celery/issues/7355) ([#10134](https://github.com/celery/celery/issues/10134))\n- fix(beat): correct argument order in Service.__reduce__ ([#10137](https://github.com/celery/celery/issues/10137))\n- ci: declare explicit read-only token permissions in workflow jobs ([#10139](https://github.com/celery/celery/issues/10139))\n- chore: 'boto3to' to 'boto3 to' ([#10133](https://github.com/celery/celery/issues/10133))\n- Database Backend: Add missing index on date_done (Fixes [#10097](https://github.com/celery/celery/issues/10097)) ([#10098](https://github.com/celery/celery/issues/10098))\n- docs: fix typo in CONTRIBUTING.rst ([#10141](https://github.com/celery/celery/issues/10141))\n- Refer to Flower / Prometheus for monitoring ([#10140](https://github.com/celery/celery/issues/10140))\n- docs: remove duplicated words in broker and routing docs ([#10146](https://github.com/celery/celery/issues/10146))\n- docs: fix stale version reference and grammar in README ([#10145](https://github.com/celery/celery/issues/10145))\n- docs: fix wording in Celery 5.3 worker pool notes ([#10149](https://github.com/celery/celery/issues/10149))\n- docs: fix duplicated wording in 3.1 changelog entry ([#10152](https://github.com/celery/celery/issues/10152))\n- docs: fix changelog typo in context manager wording ([#10144](https://github.com/celery/celery/issues/10144))\n- Fix/10096 worker fails to reconnect after redis failover ([#10151](https://github.com/celery/celery/issues/10151))\n- Improve on_after_finalize signal documentation ([#10155](https://github.com/celery/celery/issues/10155))\n- Add non-commutative example to clarify partial arg ordering in canvas docs ([#10157](https://github.com/celery/celery/issues/10157))\n- Remove redundant test_isa_mapping test (fixes [#10077](https://github.com/celery/celery/issues/10077)) ([#10103](https://github.com/celery/celery/issues/10103))\n- Upgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg ([#10162](https://github.com/celery/celery/issues/10162))\n- Remove deprecated args from redis get_connection call ([#10036](https://github.com/celery/celery/issues/10036))\n- Fix [#6912](https://github.com/celery/celery/issues/6912) rpc backend reconnection error ([#10179](https://github.com/celery/celery/issues/10179))\n- Fix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) ([#10165](https://github.com/celery/celery/issues/10165))\n- docs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit ([#10181](https://github.com/celery/celery/issues/10181))\n- Fix O(K²) message bloat in a chain of chords ([#10171](https://github.com/celery/celery/issues/10171))\n- Fix mock connection interfaces to prevent `TypeError` during exception handling ([#10178](https://github.com/celery/celery/issues/10178))\n- fix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks ([#10159](https://github.com/celery/celery/issues/10159))\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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/3f4d8d795ad128bd7430cc5dc174a802cded425c\"\u003e\u003ccode\u003e3f4d8d7\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.3 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10221\"\u003e#10221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a989e8cf8876274b1f0612abffeeb2e9995ed321\"\u003e\u003ccode\u003ea989e8c\u003c/code\u003e\u003c/a\u003e fix: clear the timer while catch the exception (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10218\"\u003e#10218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d06de5f047620b0ea2bdbdb3c0c56137b79ae9a1\"\u003e\u003ccode\u003ed06de5f\u003c/code\u003e\u003c/a\u003e Chore(deps): Bump nick-fields/retry from 3 to 4 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10213\"\u003e#10213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/c3c19c31dc3e21f16d4d85a8ba8401a9223ace09\"\u003e\u003ccode\u003ec3c19c3\u003c/code\u003e\u003c/a\u003e Fix: prioritize request ignore_result over task definition (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10184\"\u003e#10184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d23be53f6f3600d48df35a797c63eb1c7d4d4b97\"\u003e\u003ccode\u003ed23be53\u003c/code\u003e\u003c/a\u003e Remove outdated autoreloader section from extending docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10154\"\u003e#10154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ada2da7475a5fa9f9ad079149a5d6864634abc28\"\u003e\u003ccode\u003eada2da7\u003c/code\u003e\u003c/a\u003e docs: fix duplicated word in bootsteps comment\\n\\nSigned-off-by: Rohan Santho...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f45f62beb3b16ae960944f8c97de13ccf15f2d0a\"\u003e\u003ccode\u003ef45f62b\u003c/code\u003e\u003c/a\u003e Add compression header to message protocol docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10156\"\u003e#10156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9a270925546ed9d0ca0303fb5006edc86b705fd9\"\u003e\u003ccode\u003e9a27092\u003c/code\u003e\u003c/a\u003e docs: clarify after_return behavior for retried tasks (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10192\"\u003e#10192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6ee6230cd80ef6c3e7482e1f4cd970fbb0629b23\"\u003e\u003ccode\u003e6ee6230\u003c/code\u003e\u003c/a\u003e Fix#9722 friendly status errors for CLI (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10190\"\u003e#10190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a9a2d4cecaf0e58c401ad6f68f022afa19770ac2\"\u003e\u003ccode\u003ea9a2d4c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10186\"\u003e#10186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.6.2...v5.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygithub` from 2.8.1 to 2.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.8.1...v2.9.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 `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 `django-allauth` from 65.15.0 to 65.16.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\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 `opentelemetry-api` from 1.40.0 to 1.41.0\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.41.0/0.62b0 (2026-04-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ehost\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].host\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5002\"\u003e#5002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003econtainer\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].container\u003c/code\u003e, using entry point loading of the \u003ccode\u003eopentelemetry-resource-detector-containerid\u003c/code\u003e contrib package\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5004\"\u003e#5004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_tracer_provider\u003c/code\u003e/\u003ccode\u003econfigure_tracer_provider\u003c/code\u003e to declarative file configuration, enabling TracerProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4985\"\u003e#4985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnabled the flake8-tidy-import plugins rules for the ruff linter. These rules throw warnings for relative imports in the modules.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5019\"\u003e#5019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Fix \u003ccode\u003eAttributeError\u003c/code\u003e in \u003ccode\u003eExplicitBucketHistogramAggregation\u003c/code\u003e when applied to non-Histogram instruments without explicit boundaries\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5034\"\u003e#5034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eBatchLogRecordProcessor\u003c/code\u003e default \u003ccode\u003eschedule_delay_millis\u003c/code\u003e from 5000ms to 1000ms to comply with the OTel specification. Note: logs may be exported 5x more frequently by default (e.g. for users who don't explicitly set the \u003ccode\u003eOTEL_BLRP_SCHEDULE_DELAY\u003c/code\u003e env var).\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4998\"\u003e#4998\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eprocess\u003c/code\u003e resource detector support to declarative file configuration via \u003ccode\u003edetection_development.detectors[].process\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5001\"\u003e#5001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add shared \u003ccode\u003e_parse_headers\u003c/code\u003e helper for declarative config OTLP exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Replace a broad exception in attribute cleaning tests to satisfy pylint in the \u003ccode\u003elint-opentelemetry-api\u003c/code\u003e CI job\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_meter_provider\u003c/code\u003e/\u003ccode\u003econfigure_meter_provider\u003c/code\u003e to declarative file configuration, enabling MeterProvider instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4987\"\u003e#4987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_resource\u003c/code\u003e and \u003ccode\u003ecreate_propagator\u003c/code\u003e/\u003ccode\u003econfigure_propagator\u003c/code\u003e to declarative file configuration, enabling Resource and propagator instantiation from config files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4979\"\u003e#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Map Python \u003ccode\u003eCRITICAL\u003c/code\u003e log level to OTel \u003ccode\u003eFATAL\u003c/code\u003e severity text per the specification\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4984\"\u003e#4984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add file configuration support with YAML/JSON loading, environment variable substitution, and schema validation against the vendored OTel config JSON schema\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4898\"\u003e#4898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix intermittent CI failures in \u003ccode\u003egetting-started\u003c/code\u003e and \u003ccode\u003etracecontext\u003c/code\u003e jobs caused by GitHub git CDN SHA propagation lag by installing contrib packages from the already-checked-out local copy instead of a second git clone\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4958\"\u003e#4958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: fix type annotations on \u003ccode\u003eMetricReader\u003c/code\u003e and related types\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4938/\"\u003e#4938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement log creation metric\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4935\"\u003e#4935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement metric reader metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4970\"\u003e#4970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: implement processor metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5012\"\u003e#5012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: upgrade vendored OTel configuration schema from v1.0.0-rc.3 to v1.0.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4965\"\u003e#4965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eimprove check-links ci job\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4978\"\u003e#4978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eResolve some Pyright type errors in Span/ReadableSpan and utility stubs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4973\"\u003e#4973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-prometheus\u003c/code\u003e: Fix metric name prefix\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4895\"\u003e#4895\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add deepcopy support for \u003ccode\u003eBoundedAttributes\u003c/code\u003e and \u003ccode\u003eBoundedList\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4934\"\u003e#4934\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-proto-json\u003c/code\u003e, \u003ccode\u003eopentelemetry-codegen-json\u003c/code\u003e: Implement custom protoc plugin to generate OTLP JSON class definitions\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4910\"\u003e#4910\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/1a178fcc5c689516849ced80fb2533fe7db7a80f\"\u003e\u003ccode\u003e1a178fc\u003c/code\u003e\u003c/a\u003e [release/v1.41.x-0.62bx] Prepare release 1.41.0/0.62b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5064\"\u003e#5064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/37dea4bbdb1a3c83b96fc22c2f68a848b4989fb5\"\u003e\u003ccode\u003e37dea4b\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/mfosterw/cookiestocracy/pull/331","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfosterw%2Fcookiestocracy/issues/331","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/331/packages"}},{"old_version":"2.3.0","new_version":"2.9.1","update_type":"minor","path":null,"pr_created_at":"2026-04-16T16:26:36.000Z","version_change":"2.3.0 → 2.9.1","issue":{"uuid":"4277086715","node_id":"PR_kwDOJlvfws7TCK2U","number":142,"state":"open","title":"chore(deps): bump pygithub from 2.3.0 to 2.9.1","user":"dependabot[bot]","labels":["📦 Dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-16T16:26:36.000Z","updated_at":"2026-04-16T16:26:54.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"pygithub","old_version":"2.3.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.3.0 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.3.0...v2.9.1\"\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=pygithub\u0026package-manager=pip\u0026previous-version=2.3.0\u0026new-version=2.9.1)](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/actuarysailor/gha-repo-manager/pull/142","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/actuarysailor%2Fgha-repo-manager/issues/142","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/142/packages"}},{"old_version":"2.6.1","new_version":"2.9.1","update_type":"minor","path":"/tools/base","pr_created_at":"2026-04-15T06:15:50.000Z","version_change":"2.6.1 → 2.9.1","issue":{"uuid":"4266688730","node_id":"PR_kwDORXHJ9M7SiKNV","number":30,"state":"open","title":"Bump pygithub from 2.6.1 to 2.9.1 in /tools/base","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-04-15T06:15:50.000Z","updated_at":"2026-04-15T06:17:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pygithub","old_version":"2.6.1","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":"/tools/base","ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.6.1 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.9.0\u003c/h2\u003e\n\u003ch3\u003eNotable changes\u003c/h3\u003e\n\u003ch4\u003eLazy PyGithub objects\u003c/h4\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0. This release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003es optionally lazy (if useful). See \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3403\"\u003ePyGithub/PyGithub#3403\u003c/a\u003e for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API. Only accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Use lazy mode\r\ng = Github(auth=auth, lazy=True)\r\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful). This is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003ch4\u003ePyGithub objects with a paginated property\u003c/h4\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties. Some objects returned by the API have a property that allows for pagination. Fetching subsequent pages of that property means fetching the entire object (with all other properties) and the specified page of the paginated property. Iterating over the paginated property means fetching all other properties multiple times. Fortunately, the allowed size of each page (\u003ccode\u003eper_page\u003c/code\u003e is usually 300, in contrast to the \u0026quot;usual\u0026quot; \u003ccode\u003eper_page\u003c/code\u003e maximum of 100).\u003c/p\u003e\n\u003cp\u003eObjects with paginated properties:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommit.files\u003c/li\u003e\n\u003cli\u003eComparison.commits\u003c/li\u003e\n\u003cli\u003eEnterpriseConsumedLicenses.users\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis PR makes iterating those paginated properties use the configured \u003ccode\u003eper_page\u003c/code\u003e setting.\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.0 (March 22, 2026)\u003c/h2\u003e\n\u003cp\u003eNotable changes\n^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eLazy PyGithub objects\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe notion of lazy objects has been added to some PyGithub classes in version 2.6.0.\nThis release now makes all \u003ccode\u003eCompletableGithubObject\u003c/code\u003e\\s optionally lazy (if useful).\nSee \u003ccode\u003e[#3403](https://github.com/pygithub/pygithub/issues/3403) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3403\u0026gt;\u003c/code\u003e_ for a complete list.\u003c/p\u003e\n\u003cp\u003eIn lazy mode, getting a PyGithub object does not send a request to the GitHub API.\nOnly accessing methods and properties sends the necessary requests to the GitHub API:\u003c/p\u003e\n\u003cp\u003e.. code-block:: python\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e# Use lazy mode\ng = Github(auth=auth, lazy=True)\n\u003ch1\u003ethese method calls do not send requests to the GitHub API\u003c/h1\u003e\n\u003cp\u003euser = g.get_user(\u0026quot;PyGithub\u0026quot;)    # get the user\nrepo = user.get_repo(\u0026quot;PyGithub\u0026quot;) # get the user's repo\npull = repo.get_pull(3403)       # get a known pull request\nissue = pull.as_issue()          # turn the pull request into an issue\u003c/p\u003e\n\u003ch1\u003ethese method and property calls send requests to Github API\u003c/h1\u003e\n\u003cp\u003eissue.create_reaction(\u0026quot;rocket\u0026quot;)  # create a reaction\ncreated = repo.created_at        # get property of lazy object repo\u003c/p\u003e\n\u003ch1\u003eonce a lazy object has been fetched, all properties are available (no more requests)\u003c/h1\u003e\n\u003cp\u003elicence = repo.license\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eAll PyGithub classes that implement \u003ccode\u003eCompletableGithubObject\u003c/code\u003e support lazy mode (if useful).\nThis is only useful for classes that have methods creating, changing, or getting objects.\u003c/p\u003e\n\u003cp\u003eBy default, PyGithub objects are not lazy.\u003c/p\u003e\n\u003cp\u003ePyGithub objects with a paginated property\n\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u0026quot;\u003c/p\u003e\n\u003cp\u003eThe GitHub API has the \u0026quot;feature\u0026quot; of paginated properties.\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3a17ecf4a5a4dc873f2632470a712497b38eea88\"\u003e\u003ccode\u003e3a17ecf\u003c/code\u003e\u003c/a\u003e Release 2.9.0 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3465\"\u003e#3465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/b1a9b7e2a37b515b141e01091b7c964ff883fe1e\"\u003e\u003ccode\u003eb1a9b7e\u003c/code\u003e\u003c/a\u003e Consider per-page settings when iterating paginated properties (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/24305f6d60869a849dadd0d271b4753ceac3658d\"\u003e\u003ccode\u003e24305f6\u003c/code\u003e\u003c/a\u003e Update test key pair (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3453\"\u003e#3453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/f2540db50423aa124beaeb8c7bfba7098a549c82\"\u003e\u003ccode\u003ef2540db\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003eReaction.delete\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/19e1c5032397a95c58fe25760723ffc24cbe0ec8\"\u003e\u003ccode\u003e19e1c50\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ethrow\u003c/code\u003e option to \u003ccode\u003eWorkflow.create_dispatch\u003c/code\u003e to raise exceptions (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/646190988f3dd18e790969868b9ffe3c71acf254\"\u003e\u003ccode\u003e6461909\u003c/code\u003e\u003c/a\u003e Add Secret Scanning Alerts and Improve Code Scan Alerts (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3307\"\u003e#3307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/95648db4780e977b5bad8c19f669ec3f8c2b1a49\"\u003e\u003ccode\u003e95648db\u003c/code\u003e\u003c/a\u003e Add Python 3.14 to CI and tox (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/3716bab10b7a99445ef50d698d6b2d681620ac88\"\u003e\u003ccode\u003e3716bab\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eGET\u003c/code\u003e url or \u003ccode\u003e_links.self\u003c/code\u003e as object url (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3421\"\u003e#3421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.6.1...v2.9.1\"\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=pygithub\u0026package-manager=pip\u0026previous-version=2.6.1\u0026new-version=2.9.1)](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/sg-evals/envoy--25f893b4/pull/30","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sg-evals%2Fenvoy--25f893b4/issues/30","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/30/packages"}},{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":"/tools/base","pr_created_at":"2026-04-15T06:04:04.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"4266629218","node_id":"PR_kwDOBq29_87Sh_HD","number":1676,"state":"closed","title":"build(deps): bump pygithub from 2.9.0 to 2.9.1 in /tools/base","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-21T19:33:18.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-15T06:04:04.000Z","updated_at":"2026-04-21T19:33:20.000Z","time_to_close":566954,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"pygithub","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/pygithub/pygithub"}],"path":"/tools/base","ecosystem":"pip"},"body":"Bumps [pygithub](https://github.com/pygithub/pygithub) from 2.9.0 to 2.9.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygithub/pygithub/releases\"\u003epygithub's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.9.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode by \u003ca href=\"https://github.com/EnricoMi\"\u003e\u003ccode\u003e@​EnricoMi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyGithub/PyGithub/pull/3469\"\u003ePyGithub/PyGithub#3469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\"\u003ehttps://github.com/PyGithub/PyGithub/compare/v2.9.0...v2.9.1\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/PyGithub/PyGithub/blob/main/doc/changes.rst\"\u003epygithub's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.9.1 (April 14, 2026)\u003c/h2\u003e\n\u003cp\u003eBug Fixes\n^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix getting release by tag in lazy mode (\u003ccode\u003e[#3469](https://github.com/pygithub/pygithub/issues/3469) \u0026lt;https://github.com/PyGithub/PyGithub/pull/3469\u0026gt;\u003c/code\u003e\u003cem\u003e) (\u003ccode\u003e7d1ba281e \u0026lt;https://github.com/PyGithub/PyGithub/commit/7d1ba281e\u0026gt;\u003c/code\u003e\u003c/em\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/PyGithub/PyGithub/commit/73742d410da73e44a477b0e3f05dfba1749022af\"\u003e\u003ccode\u003e73742d4\u003c/code\u003e\u003c/a\u003e Release 2.9.1 (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3478\"\u003e#3478\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyGithub/PyGithub/commit/7d1ba281e4bf02cb6d3772f11b17c7d6088052d8\"\u003e\u003ccode\u003e7d1ba28\u003c/code\u003e\u003c/a\u003e Fix getting release by tag in lazy mode (\u003ca href=\"https://redirect.github.com/pygithub/pygithub/issues/3469\"\u003e#3469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygithub/pygithub/compare/v2.9.0...v2.9.1\"\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=pygithub\u0026package-manager=pip\u0026previous-version=2.9.0\u0026new-version=2.9.1)](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/derekargueta/envoy/pull/1676","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/derekargueta%2Fenvoy/issues/1676","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1676/packages"}}]}