{"id":13733,"name":"cairosvg","ecosystem":"pip","repository_url":"https://github.com/Kozea/CairoSVG","issues_count":230,"created_at":"2025-06-06T23:33:13.107Z","updated_at":"2025-06-06T23:33:13.107Z","purl":"pkg:pypi/cairosvg","metadata":{"id":2663402,"name":"cairosvg","ecosystem":"pypi","description":"A Simple SVG Converter based on Cairo","homepage":"https://courtbouillon.org/cairosvg","licenses":"LGPL-3.0-or-later","normalized_licenses":["LGPL-3.0-or-later"],"repository_url":"https://github.com/Kozea/CairoSVG","keywords_array":["svg","converter","cairo","pdf","png","postscript"],"namespace":null,"versions_count":65,"first_release_published_at":"2011-12-13T11:13:52.000Z","latest_release_published_at":"2025-05-15T06:56:28.000Z","latest_release_number":"2.8.2","last_synced_at":"2025-06-06T19:30:26.796Z","created_at":"2022-04-10T10:16:37.889Z","updated_at":"2025-06-06T19:30:26.796Z","registry_url":"https://pypi.org/project/cairosvg/","install_command":"pip install cairosvg --index-url https://pypi.org/simple","documentation_url":"https://cairosvg.org/documentation/","metadata":{"funding":null,"documentation":"https://cairosvg.org/documentation/","classifiers":["Development Status :: 5 - Production/Stable","Environment :: Console","Intended Audience :: End Users/Desktop","Operating System :: OS Independent","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.9","Topic :: Multimedia :: Graphics :: Graphics Conversion"],"normalized_name":"cairosvg"},"repo_metadata":{"id":801132,"uuid":"2184291","full_name":"Kozea/CairoSVG","owner":"Kozea","description":"Convert your vector images","archived":false,"fork":false,"pushed_at":"2024-05-27T07:31:29.000Z","size":31019,"stargazers_count":751,"open_issues_count":98,"forks_count":150,"subscribers_count":50,"default_branch":"main","last_synced_at":"2024-09-03T18:38:45.983Z","etag":null,"topics":["cairo","converter","pdf","png","python","svg"],"latest_commit_sha":null,"homepage":"https://courtbouillon.org/cairosvg","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/Kozea.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"courtbouillon"}},"created_at":"2011-08-10T09:15:48.000Z","updated_at":"2024-09-03T04:54:17.000Z","dependencies_parsed_at":"2023-07-05T19:02:19.705Z","dependency_job_id":"aa999db1-2278-4b2d-a13b-165f257a9ffe","html_url":"https://github.com/Kozea/CairoSVG","commit_stats":{"total_commits":872,"total_committers":45,"mean_commits":"19.377777777777776","dds":"0.29357798165137616","last_synced_commit":"2cbe3066e604af67c31d6651aa3acafe4ae0749d"},"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kozea","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217598129,"owners_count":16201829,"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":"Kozea","name":"Kozea","uuid":"870325","kind":"organization","description":"We build open source software that you will love.","email":null,"website":"https://community.kozea.fr/","location":"Lyon, France","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/870325?v=4","repositories_count":99,"last_synced_at":"2024-04-12T23:10:29.120Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/Kozea","funding_links":[],"total_stars":15869,"followers":82,"following":0,"created_at":"2022-11-02T16:26:34.850Z","updated_at":"2024-04-12T23:11:00.419Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kozea","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kozea/repositories"},"tags":[{"name":"2.7.1","sha":"0abf992fb701a26c544be9589f06892535834289","kind":"commit","published_at":"2023-08-05T08:57:32.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.7.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.7.1/manifests"},{"name":"2.7.0","sha":"33007d4af9195e2bfb2ff9af064c4c2d8e4b2b53","kind":"commit","published_at":"2023-03-20T14:31:24.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.7.0","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.7.0/manifests"},{"name":"2.6.0","sha":"f5170f8d5a1cb8f9738228038edd6efab52566d7","kind":"commit","published_at":"2023-01-12T16:46:47.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.6.0","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.6.0/manifests"},{"name":"2.5.2","sha":"e6013a31b714b6b632a3a6f3e565643c98b296ce","kind":"commit","published_at":"2021-03-06T15:16:34.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.5.2","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.5.2/manifests"},{"name":"2.5.1","sha":"44c5d42f96be879fc4e21775e51300bd3ad0093e","kind":"commit","published_at":"2021-01-06T14:50:16.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.5.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.5.1/manifests"},{"name":"2.5.0","sha":"6cbf93d1fc2786449b6b19a56200a8ab698ba4a9","kind":"commit","published_at":"2020-10-29T22:56:59.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.5.0","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.5.0/manifests"},{"name":"2.4.2","sha":"001c3d06858ba997698d1785f14495542ac2db51","kind":"commit","published_at":"2019-09-10T14:06:42.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.4.2","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.4.2/manifests"},{"name":"2.4.1","sha":"81cf9249b7a894f2eaad8d4ac8d6b44a0652fbc3","kind":"commit","published_at":"2019-08-21T10:06:54.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.4.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.4.1/manifests"},{"name":"2.4.0","sha":"517fb8ce38fdbd1e1cf5a47b3964f2dc4ad0d5ee","kind":"commit","published_at":"2019-05-20T11:37:53.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.4.0","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.4.0/manifests"},{"name":"2.3.1","sha":"11ee7772bd3f86bac31ff99a6e9f3a03b1e0edc4","kind":"commit","published_at":"2019-04-18T12:25:07.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.3.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.3.1/manifests"},{"name":"2.3.0","sha":"0a99b88f034a46c83c5e1ed4541b34055ed9b4e9","kind":"commit","published_at":"2019-02-08T16:30:49.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.3.0","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.3.0/manifests"},{"name":"2.2.1","sha":"dbf3b673a97433d23cb65583fc86e75f0400ed77","kind":"commit","published_at":"2018-09-27T13:19:44.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.2.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.2.1/manifests"},{"name":"2.2.0","sha":"ed92813c78e282139a0d47061b1ffbbb77fbb1df","kind":"commit","published_at":"2018-09-26T09:46:38.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.2.0","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.2.0/manifests"},{"name":"2.1.3","sha":"371ddc0fdebcb66cbdd6a5a9499a13890c96930e","kind":"commit","published_at":"2018-01-03T13:54:57.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.1.3","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.1.3/manifests"},{"name":"2.1.2","sha":"47a1bcf13479f9aca3479f866460fafba53e2c44","kind":"commit","published_at":"2017-12-01T18:54:45.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.1.2","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.1.2/manifests"},{"name":"2.1.1","sha":"e97f31c1e319134886eb1320ba70d74bc513ce0d","kind":"commit","published_at":"2017-09-30T20:15:53.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.1.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.1.1/manifests"},{"name":"2.1.0","sha":"f10821e7443220e34a2b65632b3bc29ae5d9d2af","kind":"commit","published_at":"2017-09-30T16:36:13.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.1.0","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.1.0/manifests"},{"name":"2.0.3","sha":"c322e61e108e695322749798f209295657637db0","kind":"commit","published_at":"2017-05-02T18:00:53.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.0.3","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.3/manifests"},{"name":"2.0.2","sha":"93cd6ee36d362d2720ba27b57aba738bf5186716","kind":"commit","published_at":"2017-03-20T11:33:10.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.0.2","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.2/manifests"},{"name":"2.0.1","sha":"9d275985f2d040712c1045f865a55ddadafda1d8","kind":"commit","published_at":"2017-01-04T09:59:42.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.0.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.1/manifests"},{"name":"2.0.0","sha":"3861c1c5714b072ec73a089fa99d8f2dace9616f","kind":"commit","published_at":"2016-11-24T21:59:06.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.0.0","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0/manifests"},{"name":"2.0.0-rc6","sha":"ee95ca953ec20eee8a39630ee6cd3f774be05ed3","kind":"commit","published_at":"2016-08-27T13:34:10.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.0.0-rc6","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.0.0-rc6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0-rc6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0-rc6/manifests"},{"name":"2.0.0rc6","sha":"ee95ca953ec20eee8a39630ee6cd3f774be05ed3","kind":"commit","published_at":"2016-08-27T13:34:10.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.0.0rc6","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.0.0rc6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc6/manifests"},{"name":"2.0.0rc5","sha":"60bca325672116cb6927ec79bccefe7a6970206e","kind":"commit","published_at":"2016-08-05T15:22:40.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.0.0rc5","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.0.0rc5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc5/manifests"},{"name":"2.0.0rc4","sha":"a95bfb8dc9b6a86676009e6ca38798a4c7852134","kind":"commit","published_at":"2016-07-16T17:01:06.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.0.0rc4","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.0.0rc4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc4/manifests"},{"name":"2.0.0rc3","sha":"28bc8a659ee8055f07783544d5af5d32c21e662b","kind":"commit","published_at":"2016-07-16T16:44:33.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.0.0rc3","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.0.0rc3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc3/manifests"},{"name":"1.0.22","sha":"d7305b7f7239b51908688ad0c36fdf4ddd8f3dc9","kind":"commit","published_at":"2016-06-16T11:46:42.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.22","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.22","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.22","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.22/manifests"},{"name":"2.0.0rc2","sha":"ad11b6ea71b4016145d6dd8d3d47d23ccacee34d","kind":"commit","published_at":"2016-06-15T10:38:58.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.0.0rc2","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.0.0rc2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc2/manifests"},{"name":"1.0.21","sha":"f46ff11205775e7b96553cd8edd720d333ad1398","kind":"commit","published_at":"2016-06-14T15:44:13.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.21","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.21","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.21","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.21/manifests"},{"name":"2.0.0rc1","sha":"5c316bd9f51bb1e65643abccf5c3c9921ee02720","kind":"commit","published_at":"2016-04-30T10:01:09.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/2.0.0rc1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/2.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/2.0.0rc1/manifests"},{"name":"1.0.20","sha":"c98a6306b65c8a3db0c367d26c8c8cbf187701f3","kind":"commit","published_at":"2016-02-23T18:30:55.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.20","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.20","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.20","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.20/manifests"},{"name":"1.0.19","sha":"9aae64fdeac89ab22242af805954e36c367469bc","kind":"commit","published_at":"2015-10-30T14:26:48.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.19","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.19","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.19","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.19/manifests"},{"name":"1.0.18","sha":"df4ceb94c4c08e28a6188d8f73452112278d1d3e","kind":"commit","published_at":"2015-10-20T21:02:27.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.18","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.18","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.18","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.18/manifests"},{"name":"1.0.17","sha":"5d43e4d8a8fa9ebab630f9692a9299dccf02ab4b","kind":"commit","published_at":"2015-10-09T14:11:06.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.17","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.17","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.17","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.17/manifests"},{"name":"1.0.16","sha":"e76ac5cc6ed51da41127913f96d0662f6acb2b34","kind":"commit","published_at":"2015-08-05T19:07:05.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.16","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.16","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.16","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.16/manifests"},{"name":"1.0.15","sha":"7078e8e975b3acde9708badcd46d59f9e8e5911f","kind":"commit","published_at":"2015-06-22T13:35:43.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.15","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.15","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.15","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.15/manifests"},{"name":"1.0.14","sha":"e29b0437b7ec92c6e0fc501934b9211481f479f2","kind":"commit","published_at":"2015-06-02T12:57:37.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.14","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.14","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.14","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.14/manifests"},{"name":"1.0.13","sha":"df21eed24c73e228a66a7a40b9d47ceb872c676f","kind":"commit","published_at":"2015-02-26T16:39:35.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.13","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.13","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.13","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.13/manifests"},{"name":"1.0.12","sha":"a9b007a91d1bf2237e6b1c235904b38bd9be92ec","kind":"commit","published_at":"2015-02-26T16:06:11.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.12","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.12/manifests"},{"name":"1.0.11","sha":"4d4f0200969d597bb30e3d15fbcaf0519b553daf","kind":"commit","published_at":"2015-02-11T13:59:19.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.11","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.11/manifests"},{"name":"1.0.10","sha":"c94f76d156107dbe3bcb08aeda422dc2bee64224","kind":"commit","published_at":"2015-02-09T16:54:17.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.10","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.10/manifests"},{"name":"1.0.9","sha":"ff5465156c4eff5c746874c74c65561f18586ea2","kind":"commit","published_at":"2014-08-12T07:17:50.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.9","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.9/manifests"},{"name":"1.0.8","sha":"92ab366a60d0c15b5e636a655b2cf7a7145fc41d","kind":"commit","published_at":"2014-07-14T16:33:04.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.8","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.8/manifests"},{"name":"1.0.7","sha":"56a5922369284b11e634384c2a3f4811f28fb1b1","kind":"commit","published_at":"2014-05-06T17:03:17.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.7","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.7/manifests"},{"name":"1.0.6","sha":"69fc51aa42a0982dfd00df75410a75d6a594d40d","kind":"commit","published_at":"2014-03-07T15:09:31.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.6","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.6/manifests"},{"name":"1.0.5","sha":"7e242bcb9fd6da7f0a0f232ef165c5d668f1de32","kind":"commit","published_at":"2014-03-06T18:26:30.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.5","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.5/manifests"},{"name":"1.0.4","sha":"44219f0faf24d70bde7ce3ceb4c5405bc729a4b5","kind":"commit","published_at":"2014-01-21T17:45:42.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.4","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.4/manifests"},{"name":"1.0.3","sha":"b8ef94b1f66426c4414a426a717c65be4711d610","kind":"commit","published_at":"2013-11-27T12:49:04.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.3","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.3/manifests"},{"name":"1.0.2","sha":"f3037ddfc22b72a1d2be429f44649d637d8c1ec0","kind":"commit","published_at":"2013-11-19T05:30:11.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.2","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.2/manifests"},{"name":"1.0.1","sha":"1bd59941d0d8c39e10216be848fe906f3dacad71","kind":"commit","published_at":"2013-09-24T17:03:06.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0.1/manifests"},{"name":"1.0","sha":"9478906e17d59ea8089358a213f0c2bfb8a62178","kind":"commit","published_at":"2013-09-06T15:27:28.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/1.0","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/1.0/manifests"},{"name":"0.5","sha":"c6437e93c9d5de724f0eebf97176c72dee3ddcef","kind":"commit","published_at":"2012-12-13T12:08:30.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.5","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.5/manifests"},{"name":"0.4.4","sha":"9b4b02136bedbc9bfd1afa402050e627ed977676","kind":"commit","published_at":"2012-07-04T22:02:11.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.4.4","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.4.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.4.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.4.4/manifests"},{"name":"0.4.3","sha":"fe7a57a4d50dc56faf3b762bd4744f99f5ad41dc","kind":"commit","published_at":"2012-05-04T16:54:02.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.4.3","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.4.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.4.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.4.3/manifests"},{"name":"0.4.2","sha":"e65c908b6fb44aff4eb4199b47d4df187fba3588","kind":"commit","published_at":"2012-05-04T16:48:45.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.4.2","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.4.2/manifests"},{"name":"0.4.1","sha":"2e09579f2fd8f9427f36ae5349608f980e46733c","kind":"commit","published_at":"2012-04-27T08:48:15.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.4.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.4.1/manifests"},{"name":"0.4","sha":"cc126f02a642cec86339196a9f657bad2009ab6f","kind":"commit","published_at":"2012-04-19T11:21:23.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.4","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.4/manifests"},{"name":"0.3.1","sha":"a1c8b04d224ec6f5c3ca4467449ed7d408dcdc51","kind":"commit","published_at":"2012-02-20T13:56:56.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.3.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.3.1/manifests"},{"name":"0.3","sha":"6193f8aa1104fa427ef8df37a65ef8399a7a22d7","kind":"commit","published_at":"2012-01-27T00:54:16.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.3","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.3/manifests"},{"name":"0.2","sha":"b5dab3b6f5835b97c0b15688e5ae140927636f60","kind":"commit","published_at":"2012-01-04T20:51:36.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.2","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.2/manifests"},{"name":"0.1.2","sha":"7722650219ee0a620854144596ae276174b52f32","kind":"commit","published_at":"2011-12-14T15:30:58.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.1.2","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.1.2/manifests"},{"name":"0.1.1","sha":"1dd2a0006eb15ed5dade919ddafa76d3a952eeb3","kind":"commit","published_at":"2011-12-13T10:45:48.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.1.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.1.1/manifests"},{"name":"0.1","sha":"fdc4998a1d3b4b31a8806df28e63499d600dadee","kind":"commit","published_at":"2011-12-13T10:13:14.000Z","download_url":"https://codeload.github.com/Kozea/CairoSVG/tar.gz/0.1","html_url":"https://github.com/Kozea/CairoSVG/releases/tag/0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kozea%2FCairoSVG/tags/0.1/manifests"}]},"repo_metadata_updated_at":"2024-09-08T13:28:38.891Z","dependent_packages_count":146,"downloads":2081384,"downloads_period":"last-month","dependent_repos_count":2524,"rankings":{"downloads":0.12801920092564723,"dependent_repos_count":0.2161667728607112,"dependent_packages_count":0.1731679572826312,"stargazers_count":2.4141880455474727,"forks_count":4.0513507435689355,"docker_downloads_count":0.7004897955992666,"average":1.2805637526307774},"purl":"pkg:pypi/cairosvg","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/cairosvg","docker_dependents_count":26,"docker_downloads_count":2848847,"usage_url":"https://repos.ecosyste.ms/usage/pypi/cairosvg","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/cairosvg/dependencies","status":null,"funding_links":["https://opencollective.com/courtbouillon"],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/cairosvg/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/cairosvg/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/cairosvg/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/cairosvg/related_packages","maintainers":[{"uuid":"SimonSapin","login":"SimonSapin","name":null,"email":null,"url":null,"packages_count":16,"html_url":"https://pypi.org/user/SimonSapin/","role":null,"created_at":"2023-01-17T06:45:50.909Z","updated_at":"2023-01-17T06:45:50.909Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/SimonSapin/packages"},{"uuid":"gentooboontoo","login":"gentooboontoo","name":null,"email":null,"url":null,"packages_count":23,"html_url":"https://pypi.org/user/gentooboontoo/","role":null,"created_at":"2023-01-17T06:45:50.854Z","updated_at":"2023-01-17T06:45:50.854Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/gentooboontoo/packages"},{"uuid":"liZe","login":"liZe","name":null,"email":null,"url":null,"packages_count":23,"html_url":"https://pypi.org/user/liZe/","role":null,"created_at":"2023-01-17T06:45:50.900Z","updated_at":"2023-01-17T06:45:50.900Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/liZe/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690419,"maintainers_count":292811,"namespaces_count":0,"keywords_count":228590,"github":"pypi","metadata":{"funded_packages_count":48950},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-06T05:32:09.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":94,"unique_repositories_count_past_30_days":6,"recent_issues":[{"uuid":"5451492361","node_id":"PR_kwDOPtqAsM8AAAABDeaJCA","number":1205,"state":"closed","title":"deps(deps): bump cairosvg from 2.9.0 to 2.9.1 in /MINERVA_PID","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-14T15:47:16.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-14T15:45:52.000Z","updated_at":"2026-09-14T15:52:19.000Z","time_to_close":84,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps)","packages":[{"name":"cairosvg","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":"/MINERVA_PID","ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.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=cairosvg\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/GBOGEB/ABACUS/pull/1205","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GBOGEB%2FABACUS/issues/1205","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1205/packages"},{"uuid":"5441905831","node_id":"PR_kwDONZ-FPM8AAAABDWxuNA","number":39,"state":"closed","title":"build(deps): bump the python group across 5 directories with 21 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-09-13T18:58:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-13T18:23:14.000Z","updated_at":"2026-09-13T18:58:31.000Z","time_to_close":2108,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":21,"packages":[{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"basemap","old_version":"1.3.8","new_version":"1.3.9","repository_url":"https://github.com/matplotlib/basemap"},{"name":"basemap-data","old_version":"1.3.2","new_version":"2.0.0","repository_url":"https://github.com/matplotlib/basemap"},{"name":"cairosvg","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"},{"name":"cartopy","old_version":"0.22.0","new_version":"0.25.0","repository_url":"https://github.com/SciTools/cartopy"},{"name":"imageio","old_version":"2.34.1","new_version":"2.37.4","repository_url":"https://github.com/imageio/imageio"},{"name":"matplotlib","old_version":"3.7.2","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"xarray","old_version":"2023.1.0","new_version":"2026.7.0","repository_url":"https://github.com/pydata/xarray"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [pyyaml](https://github.com/yaml/pyyaml), [asyncio](https://github.com/python/asyncio), [basemap](https://github.com/matplotlib/basemap), [basemap-data](https://github.com/matplotlib/basemap), [cairosvg](https://github.com/Kozea/CairoSVG), [cartopy](https://github.com/SciTools/cartopy), [imageio](https://github.com/imageio/imageio), [matplotlib](https://github.com/matplotlib/matplotlib), [xarray](https://github.com/pydata/xarray), [netcdf4](https://github.com/Unidata/netcdf4-python), [h5py](https://github.com/h5py/h5py), [numpy](https://github.com/numpy/numpy), [pandas](https://github.com/pandas-dev/pandas), [scipy](https://github.com/scipy/scipy), [cdsapi](https://github.com/ecmwf/cdsapi), [pika](https://github.com/pika/pika), [python-dotenv](https://github.com/theskumar/python-dotenv), [minio](https://github.com/minio/minio-py), [aio-pika](https://github.com/mosquito/aio-pika), [psycopg2-binary](https://github.com/psycopg/psycopg2) and [apscheduler](https://github.com/agronholm/apscheduler) to permit the latest version.\nUpdates `pyyaml` from 6.0.1 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Cython 3.x and Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for extension build with Cython 3.x\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13\u003c/li\u003e\n\u003cli\u003eAdded PyPI wheels for musllinux on aarch64\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.0.2 (2024-08-06)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/808\"\u003eyaml/pyyaml#808\u003c/a\u003e -- Support for Cython 3.x and Python 3.13\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/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/41309b0bcb4559edb1d691d47199035ef539d785\"\u003e\u003ccode\u003e41309b0\u003c/code\u003e\u003c/a\u003e Release 6.0.2 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/819\"\u003e#819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/dd9f0e1236775dcce682c91823e009556ce2a271\"\u003e\u003ccode\u003edd9f0e1\u003c/code\u003e\u003c/a\u003e 6.0.2rc1 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/f5527a26d518b3e9c66f9211e0af00c83f09a97e\"\u003e\u003ccode\u003ef5527a2\u003c/code\u003e\u003c/a\u003e disable CI trigger on PR edits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/b4d80a742142004490d2da7691d534923820b81c\"\u003e\u003ccode\u003eb4d80a7\u003c/code\u003e\u003c/a\u003e Python 3.12 + musllinux_1_1_x86_64 wheel support\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.1 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Cython 3.x and Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for extension build with Cython 3.x\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13\u003c/li\u003e\n\u003cli\u003eAdded PyPI wheels for musllinux on aarch64\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.0.2 (2024-08-06)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/808\"\u003eyaml/pyyaml#808\u003c/a\u003e -- Support for Cython 3.x and Python 3.13\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/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/41309b0bcb4559edb1d691d47199035ef539d785\"\u003e\u003ccode\u003e41309b0\u003c/code\u003e\u003c/a\u003e Release 6.0.2 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/819\"\u003e#819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/dd9f0e1236775dcce682c91823e009556ce2a271\"\u003e\u003ccode\u003edd9f0e1\u003c/code\u003e\u003c/a\u003e 6.0.2rc1 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/f5527a26d518b3e9c66f9211e0af00c83f09a97e\"\u003e\u003ccode\u003ef5527a2\u003c/code\u003e\u003c/a\u003e disable CI trigger on PR edits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/b4d80a742142004490d2da7691d534923820b81c\"\u003e\u003ccode\u003eb4d80a7\u003c/code\u003e\u003c/a\u003e Python 3.12 + musllinux_1_1_x86_64 wheel support\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.1 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Cython 3.x and Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for extension build with Cython 3.x\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13\u003c/li\u003e\n\u003cli\u003eAdded PyPI wheels for musllinux on aarch64\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.0.2 (2024-08-06)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/808\"\u003eyaml/pyyaml#808\u003c/a\u003e -- Support for Cython 3.x and Python 3.13\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/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/41309b0bcb4559edb1d691d47199035ef539d785\"\u003e\u003ccode\u003e41309b0\u003c/code\u003e\u003c/a\u003e Release 6.0.2 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/819\"\u003e#819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/dd9f0e1236775dcce682c91823e009556ce2a271\"\u003e\u003ccode\u003edd9f0e1\u003c/code\u003e\u003c/a\u003e 6.0.2rc1 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/f5527a26d518b3e9c66f9211e0af00c83f09a97e\"\u003e\u003ccode\u003ef5527a2\u003c/code\u003e\u003c/a\u003e disable CI trigger on PR edits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/b4d80a742142004490d2da7691d534923820b81c\"\u003e\u003ccode\u003eb4d80a7\u003c/code\u003e\u003c/a\u003e Python 3.12 + musllinux_1_1_x86_64 wheel support\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.1 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Cython 3.x and Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for extension build with Cython 3.x\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13\u003c/li\u003e\n\u003cli\u003eAdded PyPI wheels for musllinux on aarch64\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.0.2 (2024-08-06)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/808\"\u003eyaml/pyyaml#808\u003c/a\u003e -- Support for Cython 3.x and Python 3.13\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/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/41309b0bcb4559edb1d691d47199035ef539d785\"\u003e\u003ccode\u003e41309b0\u003c/code\u003e\u003c/a\u003e Release 6.0.2 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/819\"\u003e#819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/dd9f0e1236775dcce682c91823e009556ce2a271\"\u003e\u003ccode\u003edd9f0e1\u003c/code\u003e\u003c/a\u003e 6.0.2rc1 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/f5527a26d518b3e9c66f9211e0af00c83f09a97e\"\u003e\u003ccode\u003ef5527a2\u003c/code\u003e\u003c/a\u003e disable CI trigger on PR edits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/b4d80a742142004490d2da7691d534923820b81c\"\u003e\u003ccode\u003eb4d80a7\u003c/code\u003e\u003c/a\u003e Python 3.12 + musllinux_1_1_x86_64 wheel support\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basemap` from 1.3.8 to 1.3.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/basemap/releases\"\u003ebasemap's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.9\u003c/h2\u003e\n\u003cp\u003eThis is a maintenance release that fixes the following issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eGeosLibrary\u003c/code\u003e wrapper to also work with CMake \u0026gt;= 3.27.0 and Python 2.7 on Windows.\u003c/li\u003e\n\u003cli\u003eFix broken \u003ccode\u003eProj.__call__\u003c/code\u003e when the input arguments are provided as a combined single array.\u003c/li\u003e\n\u003cli\u003eFix flipped coastlines with pseudocylindrical projections when \u003ccode\u003elon_0\u003c/code\u003e is greater than 0 deg (thanks to \u003ca href=\"https://github.com/YilongWang\"\u003e\u003ccode\u003e@​YilongWang\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u0026quot;antialiased\u0026quot; argument being ignored in \u003ccode\u003eBasemap.drawcounties\u003c/code\u003e and \u003ccode\u003eBasemap.readshapefile\u003c/code\u003e (thanks to \u003ca href=\"https://github.com/TheFizzWare\"\u003e\u003ccode\u003e@​TheFizzWare\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix missing boundary countries if \u003ccode\u003eBaseGeometry.intersection\u003c/code\u003e returns a \u003ccode\u003eGEOS_GEOMETRYCOLLECTION\u003c/code\u003e (thanks to \u003ca href=\"https://github.com/guidocioni\"\u003e\u003ccode\u003e@​guidocioni\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix warped images shown behind elliptical map backgrounds when the map boundary is not initialised manually (thanks to \u003ca href=\"https://github.com/YilongWang\"\u003e\u003ccode\u003e@​YilongWang\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix references to removed \u003ccode\u003enumpy.float\u003c/code\u003e alias (thanks to \u003ca href=\"https://github.com/quickbrett\"\u003e\u003ccode\u003e@​quickbrett\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix wrong reference to example file in FAQ (thanks to \u003ca href=\"https://github.com/timcoote\"\u003e\u003ccode\u003e@​timcoote\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePlease visit the \u003ca href=\"https://github.com/matplotlib/basemap/tree/v1.3.9/CHANGELOG.md\"\u003e\u003ccode\u003eCHANGELOG\u003c/code\u003e\u003c/a\u003e for a complete list of changes.\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/matplotlib/basemap/blob/develop/CHANGELOG.md\"\u003ebasemap's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.3.9] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eGeosLibrary\u003c/code\u003e wrapper to also work with CMake \u0026gt;= 3.27.0 and\nPython 2.7 on Windows by adding '/MANIFEST:NO' to override the new\ndefault '/MANIFEST:EMBED,ID=2' provided to linker.\u003c/li\u003e\n\u003cli\u003eFix broken \u003ccode\u003eProj.__call__\u003c/code\u003e when the input arguments are provided as\na combined single array.\u003c/li\u003e\n\u003cli\u003eFix flipped coastlines with pseudocylindrical projections when \u003ccode\u003elon_0\u003c/code\u003e\nis greater than 0 deg (solves issues \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/443\"\u003e#443\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/463\"\u003e#463\u003c/a\u003e, thanks to\n\u003ca href=\"https://github.com/YilongWang\"\u003e\u003ccode\u003e@​YilongWang\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eantialiased\u003c/code\u003e argument being ignored in \u003ccode\u003eBasemap.drawcounties\u003c/code\u003e and\n\u003ccode\u003eBasemap.readshapefile\u003c/code\u003e (solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/501\"\u003e#501\u003c/a\u003e, thanks to \u003ca href=\"https://github.com/TheFizzWare\"\u003e\u003ccode\u003e@​TheFizzWare\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eBaseGeometry.intersection\u003c/code\u003e in \u003ccode\u003e_geoslib\u003c/code\u003e so that it also works\nwith \u003ccode\u003eGEOS_GEOMETRYCOLLECTION\u003c/code\u003e objects returned by \u003ccode\u003eGEOSIntersection\u003c/code\u003e\n(solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/566\"\u003e#566\u003c/a\u003e, where country boundaries are missing due to this\nbug, thanks to \u003ca href=\"https://github.com/guidocioni\"\u003e\u003ccode\u003e@​guidocioni\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug with elliptical maps causing warped images (Blue Marble,\nETOPO, Shaded Relief) to be shown behind the map background when the\nmap boundary is not initialised manually (solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/577\"\u003e#577\u003c/a\u003e, thanks\nto \u003ca href=\"https://github.com/YilongWang\"\u003e\u003ccode\u003e@​YilongWang\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix references to removed \u003ccode\u003enumpy.float\u003c/code\u003e alias (solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/589\"\u003e#589\u003c/a\u003e,\nthanks to \u003ca href=\"https://github.com/quickbrett\"\u003e\u003ccode\u003e@​quickbrett\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix wrong reference to \u003ccode\u003eireland.py\u003c/code\u003e example in FAQ, which should be\n\u003ccode\u003ehires.py\u003c/code\u003e instead, and fix wrong use of locals and invalid syntax\nin this example (solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/592\"\u003e#592\u003c/a\u003e, thanks to \u003ca href=\"https://github.com/timcoote\"\u003e\u003ccode\u003e@​timcoote\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/matplotlib/basemap/commit/2eac57f5fa86d1261bf08211a131f8afe02fe630\"\u003e\u003ccode\u003e2eac57f\u003c/code\u003e\u003c/a\u003e Merge branch 'hotfix-1.3.9'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/86a0eb3208225b7435ec7b82cd369160dbe167dd\"\u003e\u003ccode\u003e86a0eb3\u003c/code\u003e\u003c/a\u003e Set release date for 1.3.9 in CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/8f5bca13c000820c8a247cd946b214dfcede8d37\"\u003e\u003ccode\u003e8f5bca1\u003c/code\u003e\u003c/a\u003e Backport fix for country borders disappearing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/cc314d507ee1766e9585edce2399e618a0bd36e8\"\u003e\u003ccode\u003ecc314d5\u003c/code\u003e\u003c/a\u003e Fix GeosLibrary wrapper on Windows and Python 2.7 with CMake 3.27.0+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/86814397818bdc4614e83243a49b4e7ea5bbbdb5\"\u003e\u003ccode\u003e8681439\u003c/code\u003e\u003c/a\u003e Backport fix for broken Proj.\u003cstrong\u003ecall\u003c/strong\u003e with single input array\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/87bebc5d1403a28268d65db707589d51a121f840\"\u003e\u003ccode\u003e87bebc5\u003c/code\u003e\u003c/a\u003e Fix reference to missing example in FAQ\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/7bcca100cb109957b9323680430a750904f42fd1\"\u003e\u003ccode\u003e7bcca10\u003c/code\u003e\u003c/a\u003e Fix some antialiased parameters being ignored\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/f3dc1301b0deafb0a0b2755a1273fb3fd681a975\"\u003e\u003ccode\u003ef3dc130\u003c/code\u003e\u003c/a\u003e Update CHANGELOG with original fixed issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/32eb056cb411c57ca98887cba4254627d4c48eef\"\u003e\u003ccode\u003e32eb056\u003c/code\u003e\u003c/a\u003e Fix flipped coastlines in pseudocylindrical projections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/706f980600fbd3499166a55525928ee578b39177\"\u003e\u003ccode\u003e706f980\u003c/code\u003e\u003c/a\u003e Fix warped images placed behind elliptical map background\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/basemap/compare/v1.3.8...v1.3.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basemap-data` from 1.3.2 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/basemap/releases\"\u003ebasemap-data's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003cp\u003eThis is a major release with significant amount of modifications, including some breaking changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for NumPy 2.0 (thanks to \u003ca href=\"https://github.com/cvanelteren\"\u003e\u003ccode\u003e@​cvanelteren\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13.\u003c/li\u003e\n\u003cli\u003eRemoval of support for end-of-life Python versions (Python \u0026lt; 3.9).\u003c/li\u003e\n\u003cli\u003eNew workflow for automated wheels based on \u003ca href=\"https://cibuildwheel.pypa.io/\"\u003e\u003ccode\u003ecibuildwheel\u003c/code\u003e\u003c/a\u003e with all major platforms (thanks to \u003ca href=\"https://github.com/cvanelteren\"\u003e\u003ccode\u003e@​cvanelteren\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eNew repository structure with more focus on the \u003ca href=\"https://pypi.org/project/basemap\"\u003e\u003ccode\u003ebasemap\u003c/code\u003e\u003c/a\u003e main package versus the auxiliary data packages.\u003c/li\u003e\n\u003cli\u003eMigration to implicit namespace packages (thanks to \u003ca href=\"https://github.com/ksunden\"\u003e\u003ccode\u003e@​ksunden\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePlease visit the \u003ca href=\"https://github.com/matplotlib/basemap/tree/v2.0.0/CHANGELOG.md\"\u003e\u003ccode\u003eCHANGELOG\u003c/code\u003e\u003c/a\u003e for a complete list of changes.\u003c/p\u003e\n\u003ch2\u003ev1.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a hotfix release bringing some corrections:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet recursive exclusion for \u003ccode\u003e.DS_Store\u003c/code\u003e folders in \u003ccode\u003eMANIFEST.in\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix broken implementation and docstring of \u003ccode\u003eBasemap.arcgisimage\u003c/code\u003e method (thanks to \u003ca href=\"https://github.com/nitram96\"\u003e\u003ccode\u003e@​nitram96\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePlease visit the \u003ca href=\"https://github.com/matplotlib/basemap/tree/v2.0.0/CHANGELOG.md\"\u003e\u003ccode\u003eCHANGELOG\u003c/code\u003e\u003c/a\u003e for a complete list of changes.\u003c/p\u003e\n\u003ch2\u003ev1.4.0\u003c/h2\u003e\n\u003cp\u003eThis is a minor release bringing several updates:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12, including removal of \u003ccode\u003edistutils\u003c/code\u003e use within the library and fixes for several deprecation warnings.\u003c/li\u003e\n\u003cli\u003eAdd renewed documentation, with fixes for the broken links and examples, an improved section on the installation process, and without the deprecation/sunsetting section.\u003c/li\u003e\n\u003cli\u003eUpgrade bundled GEOS to 3.6.5.\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003ebasemap\u003c/code\u003e source code to work with \u003ccode\u003ematplotlib\u003c/code\u003e 3.8.x (thanks to \u003ca href=\"https://github.com/qianwu2\"\u003e\u003ccode\u003e@​qianwu2\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePrecompiled PyPI wheels for MacOS (architectures x64 and arm64, Python 3.9+).\u003c/li\u003e\n\u003cli\u003ePrecompiled \u003ccode\u003econda-forge\u003c/code\u003e packages for MacOS arm64, GNU/Linux aarch64 and GNU/Linux ppc64le.\u003c/li\u003e\n\u003cli\u003eOptional argument \u003ccode\u003eencoding_errors\u003c/code\u003e for \u003ccode\u003eBasemap.readshapefile\u003c/code\u003e method (thanks to \u003ca href=\"https://github.com/guziy\"\u003e\u003ccode\u003e@​guziy\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eOptional argument \u003ccode\u003ecachedir\u003c/code\u003e for \u003ccode\u003eBasemap.arcgisimage\u003c/code\u003e method to allow caching of ArcGIS image downloads (thanks to \u003ca href=\"https://github.com/JoepdeJong\"\u003e\u003ccode\u003e@​JoepdeJong\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance bugfixes are also included, especially:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e_geoslib.pyx\u003c/code\u003e compilation with Cython 3.0+ \u0026quot;legacy_implicit_noexcept\u0026quot; (thanks to \u003ca href=\"https://github.com/musicinmybrain\"\u003e\u003ccode\u003e@​musicinmybrain\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_geoslib.pyx\u003c/code\u003e compilation with newer compilers Clang 16 and GCC 14 (thanks to \u003ca href=\"https://github.com/fweimer-rh\"\u003e\u003ccode\u003e@​fweimer-rh\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade the version pins for several runtime, lint, doc, setup and test requirements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePlease visit the \u003ca href=\"https://github.com/matplotlib/basemap/tree/v2.0.0/CHANGELOG.md\"\u003e\u003ccode\u003eCHANGELOG\u003c/code\u003e\u003c/a\u003e for a complete list of changes.\u003c/p\u003e\n\u003ch2\u003ev1.3.9\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/matplotlib/basemap/blob/develop/CHANGELOG.md\"\u003ebasemap-data's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.0.0] - 2025-06-13\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.13 support (PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/619\"\u003e#619\u003c/a\u003e, solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/608\"\u003e#608\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eNumPy 2.0 support (PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/614\"\u003e#614\u003c/a\u003e by \u003ca href=\"https://github.com/cvanelteren\"\u003e\u003ccode\u003e@​cvanelteren\u003c/code\u003e\u003c/a\u003e, solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/604\"\u003e#604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAutomated MacOS wheels for x86_64 and arm64 (PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/620\"\u003e#620\u003c/a\u003e by\n\u003ca href=\"https://github.com/cvanelteren\"\u003e\u003ccode\u003e@​cvanelteren\u003c/code\u003e\u003c/a\u003e, solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/608\"\u003e#608\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSupport in \u003ccode\u003eBasemap.wmsimage\u003c/code\u003e to redirect \u003ccode\u003eWebMapService\u003c/code\u003e constructor\nparameters when available (PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/603\"\u003e#603\u003c/a\u003e by \u003ca href=\"https://github.com/Kurea\"\u003e\u003ccode\u003e@​Kurea\u003c/code\u003e\u003c/a\u003e, solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/602\"\u003e#602\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING CHANGE\u003c/strong\u003e: Set Python minimum supported version to 3.9.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING CHANGE\u003c/strong\u003e: Migrate project structure (solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/616\"\u003e#616\u003c/a\u003e):\n\u003cul\u003e\n\u003cli\u003eThe repository root is repurposed again for the \u003ccode\u003ebasemap\u003c/code\u003e project.\u003c/li\u003e\n\u003cli\u003eThe auxiliary data packages are moved inside the \u003ccode\u003edata\u003c/code\u003e folder.\u003c/li\u003e\n\u003cli\u003eThe requirements files are moved to its own \u003ccode\u003edep\u003c/code\u003e folder.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eexamples\u003c/code\u003e folder is moved inside the \u003ccode\u003edoc\u003c/code\u003e folder.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING CHANGE\u003c/strong\u003e: Migrate \u003ccode\u003ebasemap\u003c/code\u003e libraries to use implicit\nnamespace packages (PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/576\"\u003e#576\u003c/a\u003e by \u003ca href=\"https://github.com/ksunden\"\u003e\u003ccode\u003e@​ksunden\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMigrate GitHub CI workflows to use \u003ccode\u003ecibuildwheel\u003c/code\u003e (PRs \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/614\"\u003e#614\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/618\"\u003e#618\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/622\"\u003e#622\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/623\"\u003e#623\u003c/a\u003e by \u003ca href=\"https://github.com/cvanelteren\"\u003e\u003ccode\u003e@​cvanelteren\u003c/code\u003e\u003c/a\u003e and PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/621\"\u003e#621\u003c/a\u003e, solves GitHub\nartifact actions v1 sunset issue).\u003c/li\u003e\n\u003cli\u003eUpdate library dependencies:\n\u003cul\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003ebasemap_data\u003c/code\u003e to 2.0.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003ebasemap_data\u003c/code\u003e to 3.0.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003epackaging\u003c/code\u003e to 20.5.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003epackaging\u003c/code\u003e to 26.0.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003enumpy\u003c/code\u003e to 2.0.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003enumpy\u003c/code\u003e to 2.4.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003ematplotlib\u003c/code\u003e to 3.4.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003ematplotlib\u003c/code\u003e to 3.11.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003epyproj\u003c/code\u003e to 3.0.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003epyproj\u003c/code\u003e to 3.8.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003epyshp\u003c/code\u003e to 2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdate optional library dependencies:\n\u003cul\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003eOWSLib\u003c/code\u003e to 0.35.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdate build dependencies:\n\u003cul\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003esetuptools\u003c/code\u003e to 67.0.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003esetuptools\u003c/code\u003e to 81.0.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003ewheel\u003c/code\u003e to 0.40.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003ewheel\u003c/code\u003e to 0.46.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003ecython\u003c/code\u003e to 3.0.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003ecython\u003c/code\u003e to 3.2.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdate doc dependencies:\n\u003cul\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003esphinx\u003c/code\u003e to 8.0.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003efuro\u003c/code\u003e to 2023.9.10.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003efuro\u003c/code\u003e to 2024.8.7.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003escipy\u003c/code\u003e to 1.6.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003escipy\u003c/code\u003e to 1.16.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003enetCDF4\u003c/code\u003e to 1.8.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/6fed00b9b6146d19ffa98fd00a19cbb0ee448141\"\u003e\u003ccode\u003e6fed00b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-2.0.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/50a3c0e6d39e8a0647d9f6aca68fec47168651dc\"\u003e\u003ccode\u003e50a3c0e\u003c/code\u003e\u003c/a\u003e Reformat CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/68f16cc127a0fccac5be6308fc1774fa417abcaf\"\u003e\u003ccode\u003e68f16cc\u003c/code\u003e\u003c/a\u003e Update license references in README also with SPDX identifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/5586c2df72e78de3dad4e0ff48ce355607307c79\"\u003e\u003ccode\u003e5586c2d\u003c/code\u003e\u003c/a\u003e Add a couple of missing references in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/49538b10f61487325183471448612183f437a00d\"\u003e\u003ccode\u003e49538b1\u003c/code\u003e\u003c/a\u003e Ensure license attributes are valid SPDX identifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/fbd080ff51eefdf973221e1794b7dba1dc44565b\"\u003e\u003ccode\u003efbd080f\u003c/code\u003e\u003c/a\u003e Make the maintainers metadata more general\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/5a180c9d27f9ed0f334ee36e24da83ff957c2baf\"\u003e\u003ccode\u003e5a180c9\u003c/code\u003e\u003c/a\u003e Fix minor typos in README files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/1e9cc09a66af0260d4025415058b1765ec78f698\"\u003e\u003ccode\u003e1e9cc09\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/963df4d010763ea02c19c98457bb86e90ad6ef60\"\u003e\u003ccode\u003e963df4d\u003c/code\u003e\u003c/a\u003e Set basemap version to 2.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/f4688ecc4714b139c57bb46c83efef5ddd5b8eb3\"\u003e\u003ccode\u003ef4688ec\u003c/code\u003e\u003c/a\u003e Merge branch 'issue-project-structure' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/basemap/compare/v1.3.2...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cairosvg` 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cartopy` from 0.22.0 to 0.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SciTools/cartopy/releases\"\u003ecartopy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump pypa/cibuildwheel from 2.21.2 to 2.21.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2451\"\u003eSciTools/cartopy#2451\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2449\"\u003eSciTools/cartopy#2449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: Deprecate unused clip_path module by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2452\"\u003eSciTools/cartopy#2452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: use Matplotlib roles Sphinx extension by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2456\"\u003eSciTools/cartopy#2456\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: Switch to (lon, lat) for all argument and return ordering by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2453\"\u003eSciTools/cartopy#2453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIntroduce \u003ccode\u003epath_to_shapely\u003c/code\u003e and \u003ccode\u003eshapely_to_path\u003c/code\u003e by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2455\"\u003eSciTools/cartopy#2455\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCenter the cartopy text in the logo by \u003ca href=\"https://github.com/philippemiron\"\u003e\u003ccode\u003e@​philippemiron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2460\"\u003eSciTools/cartopy#2460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.10.3 to 1.11.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2467\"\u003eSciTools/cartopy#2467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: Add half-pixel shift to img_transform y coordinate by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2461\"\u003eSciTools/cartopy#2461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: add deprecation note for \u003ccode\u003eclip_path\u003c/code\u003e module by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2471\"\u003eSciTools/cartopy#2471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2474\"\u003eSciTools/cartopy#2474\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.1 to 1.12.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2475\"\u003eSciTools/cartopy#2475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: Replace deprecated utcnow() call by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2478\"\u003eSciTools/cartopy#2478\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: create a single inverted polygon when no exteriors found by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2470\"\u003eSciTools/cartopy#2470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.21.3 to 2.22.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2484\"\u003eSciTools/cartopy#2484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCapitalise and protect \u0026quot;Python\u0026quot; and \u0026quot;Matplotlib\u0026quot; in suggested BibTeX citation by \u003ca href=\"https://github.com/warrickball\"\u003e\u003ccode\u003e@​warrickball\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2485\"\u003eSciTools/cartopy#2485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: Gridliner should handle offset central longitudes by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2489\"\u003eSciTools/cartopy#2489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2490\"\u003eSciTools/cartopy#2490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement local caching for WMTS requests by \u003ca href=\"https://github.com/dnowacki-usgs\"\u003e\u003ccode\u003e@​dnowacki-usgs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2316\"\u003eSciTools/cartopy#2316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2493\"\u003eSciTools/cartopy#2493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/gh-action-pypi-publish from 1.12.3 to 1.12.4 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/SciTools/cartopy/pull/2494\"\u003eSciTools/cartopy#2494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Gridliner Label Test and Docs Example by \u003ca href=\"https://github.com/jmeischner\"\u003e\u003ccode\u003e@​jmeischner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2505\"\u003eSciTools/cartopy#2505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.22.0 to 2.23.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2506\"\u003eSciTools/cartopy#2506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace sqrt(x\u003cstrong\u003e2 + y\u003c/strong\u003e2) with hypot(x, y) by \u003ca href=\"https://github.com/eumiro\"\u003e\u003ccode\u003e@​eumiro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2509\"\u003eSciTools/cartopy#2509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse pathlib.Path's read and write methods by \u003ca href=\"https://github.com/eumiro\"\u003e\u003ccode\u003e@​eumiro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2508\"\u003eSciTools/cartopy#2508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.23.0 to 2.23.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2511\"\u003eSciTools/cartopy#2511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.23.1 to 2.23.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2513\"\u003eSciTools/cartopy#2513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2516\"\u003eSciTools/cartopy#2516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTST: Bump tolerance for one image in future version testing by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2518\"\u003eSciTools/cartopy#2518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix handling of PosixPath in cartopy.io fh_getter function by \u003ca href=\"https://github.com/jolivetr\"\u003e\u003ccode\u003e@​jolivetr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2500\"\u003eSciTools/cartopy#2500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Add a raster reprojection example by \u003ca href=\"https://github.com/edsaac\"\u003e\u003ccode\u003e@​edsaac\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2496\"\u003eSciTools/cartopy#2496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTST: xfail France test due to data server issues by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2522\"\u003eSciTools/cartopy#2522\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: make hole multipolygon valid before removing from projected polygon by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2521\"\u003eSciTools/cartopy#2521\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected French WFS server address by \u003ca href=\"https://github.com/mcuntz\"\u003e\u003ccode\u003e@​mcuntz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2524\"\u003eSciTools/cartopy#2524\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Remove concurrency cancellation from release build by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2523\"\u003eSciTools/cartopy#2523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epep639: setuptools license and license-files fields by \u003ca href=\"https://github.com/bjlittle\"\u003e\u003ccode\u003e@​bjlittle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2526\"\u003eSciTools/cartopy#2526\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace deprecated numpy.math with libc.math by \u003ca href=\"https://github.com/kafitzgerald\"\u003e\u003ccode\u003e@​kafitzgerald\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2528\"\u003eSciTools/cartopy#2528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpilhaus projection  by \u003ca href=\"https://github.com/MaceKuailv\"\u003e\u003ccode\u003e@​MaceKuailv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2529\"\u003eSciTools/cartopy#2529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: add example aligning Cartopy and Matplotlib axes by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2502\"\u003eSciTools/cartopy#2502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eENH: Azimuthal rotation for Orthographic projection by \u003ca href=\"https://github.com/kenhira\"\u003e\u003ccode\u003e@​kenhira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2504\"\u003eSciTools/cartopy#2504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.23.2 to 2.23.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2525\"\u003eSciTools/cartopy#2525\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTST/FIX: xfail test-wfs-france due to unauthorized server by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2537\"\u003eSciTools/cartopy#2537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: Skip optional shapefile extensions by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2534\"\u003eSciTools/cartopy#2534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTST/FIX: Spilhaus doesn't contain units or datum by default, so remove by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2535\"\u003eSciTools/cartopy#2535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eENH: Use shapefile crs attribute when possible by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2307\"\u003eSciTools/cartopy#2307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Add a conda ci job by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2538\"\u003eSciTools/cartopy#2538\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.23.3 to 3.0.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2544\"\u003eSciTools/cartopy#2544\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2546\"\u003eSciTools/cartopy#2546\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/SciTools/cartopy/commit/2264d277a5b2900b010244d11f80bb523df349dd\"\u003e\u003ccode\u003e2264d27\u003c/code\u003e\u003c/a\u003e CI: Update release runner version (\u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2555\"\u003e#2555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/396043e1ff09061a946b6b62c4af482f5ab9f8bb\"\u003e\u003ccode\u003e396043e\u003c/code\u003e\u003c/a\u003e allow RGBA mapbox styles (\u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2553\"\u003e#2553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/98c1106e53b6de3729113cdbf2f6ef22de062d8e\"\u003e\u003ccode\u003e98c1106\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2552\"\u003e#2552\u003c/a\u003e from greglucas/doc-v0.25-date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/85dbced0ca73d0edce8c962500a583a7f3fd2c1c\"\u003e\u003ccode\u003e85dbced\u003c/code\u003e\u003c/a\u003e DOC: Add v0.25 release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/3e0bbe0e4b33efe7fdf133a8cdd7f8beb39ba69d\"\u003e\u003ccode\u003e3e0bbe0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2539\"\u003e#2539\u003c/a\u003e from greglucas/doc-v0.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/aded7af9937d4473a0bec690301eaf137e478945\"\u003e\u003ccode\u003eaded7af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2551\"\u003e#2551\u003c/a\u003e from SciTools/dependabot/github_actions/pypa/cibuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/3cba7091a45d889e11460a2609743a913e917ebe\"\u003e\u003ccode\u003e3cba709\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pypa/cibuildwheel from 3.0.1 to 3.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/84019985f666a6882b1b8d696d25b34343015005\"\u003e\u003ccode\u003e8401998\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2547\"\u003e#2547\u003c/a\u003e from SciTools/dependabot/github_actions/pypa/cibuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/c43ad1931ea88067bb3f3b7942370a8efa9d3f74\"\u003e\u003ccode\u003ec43ad19\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pypa/cibuildwheel from 3.0.0 to 3.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/7c1d8653634708c5a580999229d72f9478ab5a1d\"\u003e\u003ccode\u003e7c1d865\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2546\"\u003e#2546\u003c/a\u003e from SciTools/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SciTools/cartopy/compare/v0.22.0...v0.25.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imageio` from 2.34.1 to 2.37.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/imageio/imageio/releases\"\u003eimageio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.37.4 (2026-07-20)\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eThis release is published under the BSD-2-Clause License.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003eBug\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet filename parameter of FileNotFoundError exception (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/922\"\u003e#922\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/28c2401839738d39e28e3d7e5b584c6fbe143a2a\"\u003e\u003ccode\u003e28c2401\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDoc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix typos in docstrings and comments (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1193\"\u003e#1193\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/eae520f8a7469dd681fbee77eeee3d3139d1721b\"\u003e\u003ccode\u003eeae520f\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaint\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBump aiohttp from 3.13.3 to 3.13.4 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1178\"\u003e#1178\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/7853240312fdfa992aa8f9ec6814e282f27460c9\"\u003e\u003ccode\u003e7853240\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump aiohttp from 3.13.4 to 3.14.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1191\"\u003e#1191\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/30c35592dc8836a44e9733a214838fa1530adb07\"\u003e\u003ccode\u003e30c3559\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump black from 26.3.0 to 26.3.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1173\"\u003e#1173\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/a1b083f20d3ed293e9b8609e7ee9b7bd5b09150e\"\u003e\u003ccode\u003ea1b083f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump gdal from 3.12.2 to 3.13.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1192\"\u003e#1192\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/45fb6942de4035fc379068e1785915267c2e746c\"\u003e\u003ccode\u003e45fb694\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump idna from 3.11 to 3.15 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1189\"\u003e#1189\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/35eefdfb2a1b78bab887d9e7b34f26d1173e78a2\"\u003e\u003ccode\u003e35eefdf\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump pygments from 2.19.2 to 2.20.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1177\"\u003e#1177\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/ff0c95bf07a9c50c14bf7ac62a95b465ff7b2ab8\"\u003e\u003ccode\u003eff0c95b\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump requests from 2.32.5 to 2.33.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1176\"\u003e#1176\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/8f78220f0e97ddcffbb9c6b0d2ba9612503b81d2\"\u003e\u003ccode\u003e8f78220\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump soupsieve from 2.8.3 to 2.8.4 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1195\"\u003e#1195\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/e032eea65b93801aca1cacad668fcc0f6ffaa93d\"\u003e\u003ccode\u003ee032eea\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump urllib3 from 2.6.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1184\"\u003e#1184\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/5aef4946ed991ee6f293c74391a582dadfd78640\"\u003e\u003ccode\u003e5aef494\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSet readme content-type in project metadata (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1165\"\u003e#1165\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/9929abb19399080f0fe766f705823fe8d79dd980\"\u003e\u003ccode\u003e9929abb\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTest\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CI to support new dependency versions (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1196\"\u003e#1196\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/dfdc909c225662784c7c9469232bbe46ea983501\"\u003e\u003ccode\u003edfdc909\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/imageio/imageio/compare/v2.37.3...v2.37.4\"\u003ev2.37.3...v2.37.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.37.3 (2026-03-09)\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eThis release is published under the BSD-2-Clause License.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003eBug\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependencies (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1172\"\u003e#1172\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/971b83e048b90ffcd2fa5107bdbf270e9879afaf\"\u003e\u003ccode\u003e971b83e\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/imageio/imageio/blob/master/CHANGELOG.md\"\u003eimageio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.37.4 (2026-07-20)\u003c/h2\u003e\n\u003ch3\u003eBug\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet filename parameter of FileNotFoundError exception\n(\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/922\"\u003e#922\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/28c2401839738d39e28e3d7e5b584c6fbe143a2a\"\u003e\u003ccode\u003e28c2401\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDoc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix typos in docstrings and comments (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1193\"\u003e#1193\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/eae520f8a7469dd681fbee77eeee3d3139d1721b\"\u003e\u003ccode\u003eeae520f\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaint\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBump aiohttp from 3.13.3 to 3.13.4 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1178\"\u003e#1178\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/7853240312fdfa992aa8f9ec6814e282f27460c9\"\u003e\u003ccode\u003e7853240\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump aiohttp from 3.13.4 to 3.14.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1191\"\u003e#1191\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/30c35592dc8836a44e9733a214838fa1530adb07\"\u003e\u003ccode\u003e30c3559\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump black from 26.3.0 to 26.3.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1173\"\u003e#1173\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/a1b083f20d3ed293e9b8609e7ee9b7bd5b09150e\"\u003e\u003ccode\u003ea1b083f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump gdal from 3.12.2 to 3.13.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1192\"\u003e#1192\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/45fb6942de4035fc379068e1785915267c2e746c\"\u003e\u003ccode\u003e45fb694\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump idna from 3.11 to 3.15 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1189\"\u003e#1189\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/35eefdfb2a1b78bab887d9e7b34f26d1173e78a2\"\u003e\u003ccode\u003e35eefdf\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump pygments from 2.19.2 to 2.20.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1177\"\u003e#1177\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/ff0c95bf07a9c50c14bf7ac62a95b465ff7b2ab8\"\u003e\u003ccode\u003eff0c95b\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump requests from 2.32.5 to 2.33.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1176\"\u003e#1176\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/8f78220f0e97ddcffbb9c6b0d2ba9612503b81d2\"\u003e\u003ccode\u003e8f78220\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump soupsieve from 2.8.3 to 2.8.4 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1195\"\u003e#1195\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/e032eea65b93801aca1cacad668fcc0f6ffaa93d\"\u003e\u003ccode\u003ee032eea\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump urllib3 from 2.6.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1184\"\u003e#1184\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/5aef4946ed991ee6f293c74391a582dadfd78640\"\u003e\u003ccode\u003e5aef494\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSet readme content-type in project metadata\n(\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1165\"\u003e#1165\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/9929abb19399080f0fe766f705823fe8d79dd980\"\u003e\u003ccode\u003e9929abb\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTest\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CI to support new dependency versions\n(\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1196\"\u003e#1196\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/imageio/imageio/commit/671d96a5dd9bc94050cc89c4b436e2f7c874283e\"\u003e\u003ccode\u003e671d96a\u003c/code\u003e\u003c/a\u003e REL: Release imageio v2.37.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/28c2401839738d39e28e3d7e5b584c6fbe143a2a\"\u003e\u003ccode\u003e28c2401\u003c/code\u003e\u003c/a\u003e BUG: set filename parameter of FileNotFoundError exception (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/922\"\u003e#922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/eae520f8a7469dd681fbee77eeee3d3139d1721b\"\u003e\u003ccode\u003eeae520f\u003c/code\u003e\u003c/a\u003e DOC: Fix typos in docstrings and comments (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1193\"\u003e#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/5aef4946ed991ee6f293c74391a582dadfd78640\"\u003e\u003ccode\u003e5aef494\u003c/code\u003e\u003c/a\u003e MAINT: Bump urllib3 from 2.6.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1184\"\u003e#1184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/35eefdfb2a1b78bab887d9e7b34f26d1173e78a2\"\u003e\u003ccode\u003e35eefdf\u003c/code\u003e\u003c/a\u003e MAINT: Bump idna from 3.11 to 3.15 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1189\"\u003e#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/30c35592dc8836a44e9733a214838fa1530adb07\"\u003e\u003ccode\u003e30c3559\u003c/code\u003e\u003c/a\u003e MAINT: Bump aiohttp from 3.13.4 to 3.14.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1191\"\u003e#1191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/45fb6942de4035fc379068e1785915267c2e746c\"\u003e\u003ccode\u003e45fb694\u003c/code\u003e\u003c/a\u003e MAINT: Bump gdal from 3.12.2 to 3.13.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1192\"\u003e#1192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/e032eea65b93801aca1cacad668fcc0f6ffaa93d\"\u003e\u003ccode\u003ee032eea\u003c/code\u003e\u003c/a\u003e MAINT: Bump soupsieve from 2.8.3 to 2.8.4 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1195\"\u003e#1195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/dfdc909c225662784c7c9469232bbe46ea983501\"\u003e\u003ccode\u003edfdc909\u003c/code\u003e\u003c/a\u003e TEST: Update CI to support new dependency versions (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1196\"\u003e#1196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/c7f8249472f63d6b3c0b8cc9fae823714931c36e\"\u003e\u003ccode\u003ec7f8249\u003c/code\u003e\u003c/a\u003e [MAINT] Bump pytest from 9.0.2 to 9.0.3 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1183\"\u003e#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/imageio/imageio/compare/v2.34.1...v2.37.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.7.2 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.11.1\u003c/h2\u003e\n\u003cp\u003eThis is the first bugfix release of the 3.11.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix tight layout of multiple subplots with \u003ccode\u003esharey=True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eNoNorm\u003c/code\u003e cursor formatting for \u003ccode\u003euint8\u003c/code\u003e images\u003c/li\u003e\n\u003cli\u003eFix occasional misalignment in reported mouse position (also fix a bug with canvas height)\u003c/li\u003e\n\u003cli\u003eFix clipped Axis labels on 3D plots with tight layout\u003c/li\u003e\n\u003cli\u003eFix inverted Axis on 3D plots\u003c/li\u003e\n\u003cli\u003eFix restoring 'auto' aspect in 3D axes after switching from 'equal'\u003c/li\u003e\n\u003cli\u003eFix missing glyphs when subsetting Type 1 fonts in PDF\u003c/li\u003e\n\u003cli\u003eFix oversized embedding of Type 42 fonts in PDF/PostScript files\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAs well as several documentation and typing improvements and corrections.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0\u003c/h2\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. \u003ca href=\"https://matplotlib.org/3.11.0/release/prev_whats_new/whats_new_3.11.0.html\"\u003eSee the release notes for more information\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc2\u003c/h2\u003e\n\u003cp\u003eThis is the second release candidate for the meso release 3.11.0.\u003c/p\u003e\n\u003cp\u003eThis release candidate fixes some problems with downstream packages, removes some missed deprecations, and corrects some additional minor bugs.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc1\u003c/h2\u003e\n\u003cp\u003eAfter an extended development stretch, we are pleased to announce the first release candidate of Matplotlib 3.11.0.\u003c/p\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner. Due to the update to the font rendering stack, we cannot guarantee that text will be bit-for-bit perfect with previous releases, so if you are using Matplotlib for testing, it may be necessary to introduce/raise a tolerance within your tests.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. Final release notes are still being curated, but you may browse \u003ca href=\"https://matplotlib.org/3.11.0/release/next_whats_new\"\u003ethe list of new features\u003c/a\u003e, \u003ca href=\"https://matplotlib.org/3.11.0/api/next_api_changes.html\"\u003eAPI changes\u003c/a\u003e, and \u003ca href=\"https://github.com/matplotlib/matplotlib/milestone/96?closed=1https://github.com/matplotlib/matplotlib/milestone/96?closed=1\"\u003eall issues/pull requests on the milestone\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAs a note for downstream packagers, the font libraries have only been tested against the versions bundled with the wheels. It may be possible to expand the range of requirements, or that a requirement is too broad. Please report any issues you have building against external dependencies.\u003c/p\u003e\n\u003ch2\u003ev3.10.9\u003c/h2\u003e\n\u003cp\u003eThis is a micro release of the v3.10.x series.\nHighlights of this release include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious minor bug and doc fixes\u003c/li\u003e\n\u003cli\u003eSecurity hardening validation of cyclers - Removing eval usage\u003c/li\u003e\n\u003cli\u003eSecurity hardening in Latex and PS calls - Removing shell escapes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: v3.10.8\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe primary highlights of this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eProperly allow freethreaded mode in the MacOS backend\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/matplotlib/matplotlib/commit/3c1757a567c58e41e565313af2d3bcdc52076b43\"\u003e\u003ccode\u003e3c1757a\u003c/code\u003e\u003c/a\u003e REL: v3.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/792c6b5fa9cd2567a80fa231af19b7770b8288e4\"\u003e\u003ccode\u003e792c6b5\u003c/code\u003e\u003c/a\u003e DOC: Prepare for 3.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/aaff9f613a0886fdec0b4e20d9c5f1db15166d2c\"\u003e\u003ccode\u003eaaff9f6\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.11.0-doc' into v3.11.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d4f4527cce030c81eb699516bdd8c1cbab3a940d\"\u003e\u003ccode\u003ed4f4527\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32052\"\u003e#32052\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32038-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/6ad4bcf48beaf05b8632e082dd35a1c8960324c8\"\u003e\u003ccode\u003e6ad4bcf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32050\"\u003e#32050\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31304-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/7fb74d3476247ee7aa078ff45ec60f25f1a9b535\"\u003e\u003ccode\u003e7fb74d3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32051\"\u003e#32051\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32037-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/c624aec7de6060e16d708fd70bd2e9302e95d3f3\"\u003e\u003ccode\u003ec624aec\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32038\"\u003e#32038\u003c/a\u003e: Fix occasional misalignment in reported mouse position (a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/8eda2b79d27a4255380b97b49dcb61110690c0c1\"\u003e\u003ccode\u003e8eda2b7\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32037\"\u003e#32037\u003c/a\u003e: Bump the actions group with 3 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a0e7ae5521b59c25ced9c69e8d9aebc1b0bc7c6e\"\u003e\u003ccode\u003ea0e7ae5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31304\"\u003e#31304\u003c/a\u003e: Fix restoring 'auto' aspect in 3D axes after switching fr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/90013231a38de53af9414747a03ce010de2fe3d0\"\u003e\u003ccode\u003e9001323\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32047\"\u003e#32047\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32025-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.7.2...v3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `xarray` from 2023.1.0 to 2026.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydata/xarray/releases\"\u003exarray's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2026.07.0\u003c/h2\u003e\n\u003cp\u003eThis release adds support for Dask's query-optimizing expression arrays, along\nwith new \u003ccode\u003eday_of_week\u003c/code\u003e and \u003ccode\u003eday_of_year\u003c/code\u003e datetime accessor attributes. It\nalso includes a number of bug fixes, notably for a performance regression in\n:py:meth:\u003ccode\u003eCoordinates.to_index\u003c/code\u003e, Zarr \u003ccode\u003efill_value\u003c/code\u003e round-tripping, and\nexcessive memory use in \u003ccode\u003edrop_encoding\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to the 25 contributors to this release:\nDavis Bennett, Deepak Cherian, Ian Hunt-Isaak, Illviljan, Jonathan Dung, Julia\nSignell, Justus Magin, Kai Mühlbauer, MJSHANG, Mark Harfouche, Mathias Hauser,\nMatt Van Horn, Matthew Rocklin, Max Jones, Maximilian Roos, Nick Hodgskin,\nS Anand, Spencer Clark, Sreekant Baheti, Timothy Hodson, Tom Nicholas,\nVincent Gao, Wali Reheman, Wei Ji and eeshsaxena\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEmpty section at top of whats-new by \u003ca href=\"https://github.com/jsignell\"\u003e\u003ccode\u003e@​jsignell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydata/xarray/pull/11299\"\u003epydata/xarray#11299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix performance regression in Coordinates.to_index by \u003ca href=\"https://github.com/thodson-usgs\"\u003e\u003ccode\u003e@​thodson-usgs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydata/xarray/pull/11306\"\u003epydata/xarray#11306\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument Dataset.load_async and DataArray.load_async by \u003ca href=\"https://github.com/TomNicholas\"\u003e\u003ccode\u003e@​TomNicholas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redi...\n\n_Description has been truncated_","html_url":"https://github.com/Victor-Hndz/AtmosBlock-WebPortal/pull/39","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Victor-Hndz%2FAtmosBlock-WebPortal/issues/39","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/39/packages"},{"uuid":"5439488326","node_id":"PR_kwDOQghUCs8AAAABDU7mFA","number":21,"state":"open","title":"docs: update cairosvg requirement from \u003e=2.9.0 to \u003e=2.9.1","user":"dependabot[bot]","labels":["docs","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-13T10:22:56.000Z","updated_at":"2026-09-13T10:24:09.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"docs: update","packages":[{"name":"cairosvg","old_version":"\u003e=2.9.0","new_version":"\u003e=2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [cairosvg](https://github.com/Kozea/CairoSVG) 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.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","html_url":"https://github.com/ibtisam-iq/debugbox/pull/21","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibtisam-iq%2Fdebugbox/issues/21","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21/packages"},{"uuid":"5436463045","node_id":"PR_kwDOIi4x8s8AAAABDSmVLw","number":148,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-13T13:32:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-12T22:33:37.000Z","updated_at":"2026-09-13T13:32:48.000Z","time_to_close":53949,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":7,"packages":[{"name":"django","old_version":"6.1","new_version":"6.1.1","repository_url":"https://github.com/django/django"},{"name":"gunicorn","old_version":"26.1.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"cairosvg","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"},{"name":"pypdf","old_version":"6.16.1","new_version":"6.18.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"django-debug-toolbar","old_version":"7.1.1","new_version":"8.0.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-unfold","old_version":"0.104.1","new_version":"0.105.0","repository_url":"https://github.com/unfoldadmin/django-unfold"},{"name":"ruff","old_version":"0.16.3","new_version":"0.16.6","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.1` | `6.1.1` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.1.0` | `26.2.0` |\n| [cairosvg](https://github.com/Kozea/CairoSVG) | `2.9.0` | `2.9.1` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.16.1` | `6.18.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.1.1` | `8.0.0` |\n| [django-unfold](https://github.com/unfoldadmin/django-unfold) | `0.104.1` | `0.105.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.3` | `0.16.6` |\n\n\nUpdates `django` from 6.1 to 6.1.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/249b13d6e93ee3164dee8ed1775395622a50c337\"\u003e\u003ccode\u003e249b13d\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5f26fa88415db2268dcc3d865c5c1062c0a1d751\"\u003e\u003ccode\u003e5f26fa8\u003c/code\u003e\u003c/a\u003e [6.1.x] Added release date for 6.1.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fdcf78a14109a28433cf2b0983a75322baf5d0f7\"\u003e\u003ccode\u003efdcf78a\u003c/code\u003e\u003c/a\u003e [6.1.x] Added remaining community package mentions to the documentation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/72415689785fdf68238a288e71338a2f7b8deb2a\"\u003e\u003ccode\u003e7241568\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37222\"\u003e#37222\u003c/a\u003e -- Fixed QuerySet.distinct() crash on duplicated selecti...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ef3fc8054fea8a728cfb879375a858a6f181b8d9\"\u003e\u003ccode\u003eef3fc80\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37312\"\u003e#37312\u003c/a\u003e, Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36605\"\u003e#36605\u003c/a\u003e -- Fixed annotation preservation and key se...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/b09cb6bb9489dda57969108d058ac40e15d6584e\"\u003e\u003ccode\u003eb09cb6b\u003c/code\u003e\u003c/a\u003e [6.1.x] Clarified scope of object-level admin view permissions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/a6d3aa22a5ca5a3519cee39cf358ebdfa9fa1756\"\u003e\u003ccode\u003ea6d3aa2\u003c/code\u003e\u003c/a\u003e [6.1.x] Corrected heading hierarchy in the admin actions documentation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/9031d4185a7eaf4056dc3161859b8fe5874f0c28\"\u003e\u003ccode\u003e9031d41\u003c/code\u003e\u003c/a\u003e [6.1.x] Clarified object-level permission checks in admin actions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fc805c6f3416c626074fdfaf992df09c02502737\"\u003e\u003ccode\u003efc805c6\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37311\"\u003e#37311\u003c/a\u003e -- Prevented consumption of rhs iterators in annotation ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/4b0185a5fb02a8c691bee4ce82e70174e061a228\"\u003e\u003ccode\u003e4b0185a\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37300\"\u003e#37300\u003c/a\u003e -- Preserved parent instance hints on custom Prefetch qu...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.1...6.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.1.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.1.0...26.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cairosvg` 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.16.1 to 6.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.18.0, 2026-09-07\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003cp\u003ePlease note that this release requires users which previously overwrote the default limits to migrate to the new approach: \u003ca href=\"https://pypdf.readthedocs.io/en/6.18.0/user/security.html#global\"\u003eDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIn short:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eapply_configuration\u003c/code\u003e as a context manager to temporarily overwrite configuration values.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eoverwrite_configuration\u003c/code\u003e to change the configuration values for the whole session.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe old overwrites should continue to work in most cases. If you have migrated successfully and do not need the legacy handling anymore (which can cause some overhead), consider using the temporary \u003ccode\u003edisable_legacy_handling\u003c/code\u003e setting:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom pypdf import overwrite_configuration\r\n\u003cp\u003eoverwrite_configuration(disable_legacy_handling=True)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eIn case you are experiencing some unexpected issues after the migration, consider opening a new issue (or commenting on an existing one) with the necessary details to reproduce it.\u003c/p\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDraw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.17.0...6.18.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e) by \u003ca href=\"https://github.com/petermik68-sudo\"\u003e\u003ccode\u003e@​petermik68-sudo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e) by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e) by \u003ca href=\"https://github.com/devYRPauli\"\u003e\u003ccode\u003e@​devYRPauli\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e) by \u003ca href=\"https://github.com/SomSamantray\"\u003e\u003ccode\u003e@​SomSamantray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.18.0, 2026-09-07\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDraw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.17.0...6.18.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs\u003c/li\u003e\n\u003cli\u003eSkip trailing duplicate %%EOF markers when locating startxref (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4015\"\u003e#4015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not crash on a non-array destination (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3976\"\u003e#3976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle annotations without subtype during merge (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse AnnotationFlag enum instead of plain integers (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3997\"\u003e#3997\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Style (STY)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple small changes detected from test runs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.2...6.17.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.16.2, 2026-08-23\u003c/h2\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake remove_from_tree() work on outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3939\"\u003e#3939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBe more lenient about space width in layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3992\"\u003e#3992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not scale the text leading by the font size (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate annotation appearance stream matrix on page transform (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3968\"\u003e#3968\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/py-pdf/pypdf/commit/18e4c226a4c2dd7f187854015f52e87350f84161\"\u003e\u003ccode\u003e18e4c22\u003c/code\u003e\u003c/a\u003e REL: 6.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/82501d2993c6387833c4949d205caeb188f8bb9e\"\u003e\u003ccode\u003e82501d2\u003c/code\u003e\u003c/a\u003e SEC: Limit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/d35834b5373e80bda9b6d3537eac699170ca52fd\"\u003e\u003ccode\u003ed35834b\u003c/code\u003e\u003c/a\u003e ENH: Draw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/4b16bbb5ba97360d68f431481cc6624ece1c6bd6\"\u003e\u003ccode\u003e4b16bbb\u003c/code\u003e\u003c/a\u003e STY: Rename variable for readability (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4049\"\u003e#4049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/a1ce7fb98e7491c59a7ce03977598649ab31d5fd\"\u003e\u003ccode\u003ea1ce7fb\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when a page tree entry is not a dictionary (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4048\"\u003e#4048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/06b97ced09de5b09c8e39dd2bfbc413f4a06be4a\"\u003e\u003ccode\u003e06b97ce\u003c/code\u003e\u003c/a\u003e DEV: Bump zizmorcore/zizmor-action from 0.6.2 to 0.6.3 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4053\"\u003e#4053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/d3f790cc9f201fe7e83ec2ec971aef361a746b75\"\u003e\u003ccode\u003ed3f790c\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when the annotations are not an array (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4046\"\u003e#4046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/3dc716eaf16b7982ff44d6f45649c51abec99e63\"\u003e\u003ccode\u003e3dc716e\u003c/code\u003e\u003c/a\u003e STY: Enforce lowercase function variables (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4045\"\u003e#4045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/ec2406f31146c28deb45c26fd833779570c4144a\"\u003e\u003ccode\u003eec2406f\u003c/code\u003e\u003c/a\u003e DEP: Rework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c76eed7bdd6c6a6f05dbcfea147bd41d6d21e598\"\u003e\u003ccode\u003ec76eed7\u003c/code\u003e\u003c/a\u003e REL: 6.17.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.1...6.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.1.1 to 8.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.0.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefreshed the toolbar's visual design with self-hosted Alef (panel titles) and Geist (body text) fonts, an updated color palette, and per-panel navigation icons.\u003c/li\u003e\n\u003cli\u003eAdded a new project logo and brand identity, designed by Robin of \u003ccode\u003eRBNX Studio \u0026lt;https://www.rbnx.studio\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a \u0026quot;Docs\u0026quot; link to the toolbar that opens the documentation.\u003c/li\u003e\n\u003cli\u003eChanged the highlight color for the current request and other \u0026quot;relevant to you\u0026quot; rows from yellow to a green tint, with a left border accent for legibility in dark mode.\u003c/li\u003e\n\u003cli\u003eAdded a design guidelines page to the documentation describing the project's logo, color palette and typography.\u003c/li\u003e\n\u003cli\u003eImproved toolbar accessibility: visible keyboard focus, keyboard-operable scroll regions, reduced-motion support, \u003ccode\u003earia-expanded\u003c/code\u003e on panel toggles, an \u003ccode\u003earia-live\u003c/code\u003e status for history refreshes, and WCAG 2.1 AA contrast in both themes.\u003c/li\u003e\n\u003cli\u003eAdded a talk to the resources documentation.\u003c/li\u003e\n\u003cli\u003eUpdated the example screenshot.\u003c/li\u003e\n\u003cli\u003eUpdated the screenshot capture logic to find the toolbar elements in the shadow DOM.\u003c/li\u003e\n\u003cli\u003eTrack and display processing time of application, including the toolbar's time, in the timer panel.\u003c/li\u003e\n\u003cli\u003eFixed the History panel rendering a duplicate Refresh button below the one in its title bar.\u003c/li\u003e\n\u003cli\u003eFixed the History panel's Refresh button submitting its form when clicked before the panel's script had loaded.\u003c/li\u003e\n\u003cli\u003eDocumented the \u003ccode\u003eUSE_SHADOW_DOM\u003c/code\u003e setting, which was added in 7.0.0 but was missing from the configuration documentation, and added test coverage for it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the design interface of the toolbar by \u003ca href=\"https://github.com/VeldaKiara\"\u003e\u003ccode\u003e@​VeldaKiara\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2429\"\u003edjango-commons/django-debug-toolbar#2429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated example screenshot of the toolbar with the new design. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2446\"\u003edjango-commons/django-debug-toolbar#2446\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typos in apps.py docstrings by \u003ca href=\"https://github.com/aoright\"\u003e\u003ccode\u003e@​aoright\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2452\"\u003edjango-commons/django-debug-toolbar#2452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTrack and display middleware time in the toolbar by \u003ca href=\"https://github.com/earthcomfy\"\u003e\u003ccode\u003e@​earthcomfy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2049\"\u003edjango-commons/django-debug-toolbar#2049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cache hit/miss reporting for \u003ccode\u003ecache.get()\u003c/code\u003e by \u003ca href=\"https://github.com/Harsh3006\"\u003e\u003ccode\u003e@​Harsh3006\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2418\"\u003edjango-commons/django-debug-toolbar#2418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSquare the toolbar handle corners facing the viewport edge by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2460\"\u003edjango-commons/django-debug-toolbar#2460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow a single Refresh button in the History panel by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2459\"\u003edjango-commons/django-debug-toolbar#2459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument and test the USE_SHADOW_DOM setting by \u003ca href=\"https://github.com/alissaahodge\"\u003e\u003ccode\u003e@​alissaahodge\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2461\"\u003edjango-commons/django-debug-toolbar#2461\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/aoright\"\u003e\u003ccode\u003e@​aoright\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2452\"\u003edjango-commons/django-debug-toolbar#2452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/earthcomfy\"\u003e\u003ccode\u003e@​earthcomfy\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2049\"\u003edjango-commons/django-debug-toolbar#2049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harsh3006\"\u003e\u003ccode\u003e@​Harsh3006\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2418\"\u003edjango-commons/django-debug-toolbar#2418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alissaahodge\"\u003e\u003ccode\u003e@​alissaahodge\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2461\"\u003edjango-commons/django-debug-toolbar#2461\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.1...8.0.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.1...8.0.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/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.0.0 (2026-09-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefreshed the toolbar's visual design with self-hosted Alef (panel titles)\nand Geist (body text) fonts, an updated color palette, and per-panel\nnavigation icons.\u003c/li\u003e\n\u003cli\u003eAdded a new project logo and brand identity, designed by Robin of\n\u003ccode\u003eRBNX Studio \u0026lt;https://www.rbnx.studio\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a \u0026quot;Docs\u0026quot; link to the toolbar that opens the documentation.\u003c/li\u003e\n\u003cli\u003eChanged the highlight color for the current request and other\n\u0026quot;relevant to you\u0026quot; rows from yellow to a green tint, with a left border\naccent for legibility in dark mode.\u003c/li\u003e\n\u003cli\u003eAdded a design guidelines page to the documentation describing the project's\nlogo, color palette and typography.\u003c/li\u003e\n\u003cli\u003eImproved toolbar accessibility: visible keyboard focus, keyboard-operable\nscroll regions, reduced-motion support, \u003ccode\u003earia-expanded\u003c/code\u003e on panel toggles,\nan \u003ccode\u003earia-live\u003c/code\u003e status for history refreshes, and WCAG 2.1 AA contrast in\nboth themes.\u003c/li\u003e\n\u003cli\u003eAdded a talk to the resources documentation.\u003c/li\u003e\n\u003cli\u003eUpdated the example screenshot.\u003c/li\u003e\n\u003cli\u003eUpdated the screenshot capture logic to find the toolbar elements in the\nshadow DOM.\u003c/li\u003e\n\u003cli\u003eTrack and display processing time of application, including the toolbar's\ntime, in the timer panel.\u003c/li\u003e\n\u003cli\u003eFixed the History panel rendering a duplicate Refresh button below the one\nin its title bar.\u003c/li\u003e\n\u003cli\u003eFixed the History panel's Refresh button submitting its form when clicked\nbefore the panel's script had loaded.\u003c/li\u003e\n\u003cli\u003eDocumented the \u003ccode\u003eUSE_SHADOW_DOM\u003c/code\u003e setting, which was added in 7.0.0 but was\nmissing from the configuration documentation, and added test coverage for it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/85b98c6a93e1ff906f07545e98d8e4085424d005\"\u003e\u003ccode\u003e85b98c6\u003c/code\u003e\u003c/a\u003e Version 8.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/8fb3fe874881b46e6490e60f78f47f2ef4bc13ec\"\u003e\u003ccode\u003e8fb3fe8\u003c/code\u003e\u003c/a\u003e Document and test the USE_SHADOW_DOM setting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3f748fc093684496d53561dacb0a98b4b0345873\"\u003e\u003ccode\u003e3f748fc\u003c/code\u003e\u003c/a\u003e Show a single Refresh button in the History panel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/19fce30bfeb2b1cb77515df9bc47549f2607d3c7\"\u003e\u003ccode\u003e19fce30\u003c/code\u003e\u003c/a\u003e Square the toolbar handle corners facing the viewport edge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/ff94889178bc247a79093375b12ea68ab509ac1b\"\u003e\u003ccode\u003eff94889\u003c/code\u003e\u003c/a\u003e Bump the minor-npm-dependencies group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/65f68543551f6747cc6e38977d7a0082a63287e9\"\u003e\u003ccode\u003e65f6854\u003c/code\u003e\u003c/a\u003e Bump py-cov-action/python-coverage-comment-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/c7dc154a68077273718d1b2751bc6a6f15c7e20a\"\u003e\u003ccode\u003ec7dc154\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/93e89b132420db582ef0465c8508a744b9bc05b7\"\u003e\u003ccode\u003e93e89b1\u003c/code\u003e\u003c/a\u003e Fix CI with spelling words and biome schema version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/ecf3e1e7745993da27546c639d0652ff69a25791\"\u003e\u003ccode\u003eecf3e1e\u003c/code\u003e\u003c/a\u003e Make the cache discussion link open in a new tab.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/28996cc6050f55b0a57394ca954e1163030998f4\"\u003e\u003ccode\u003e28996cc\u003c/code\u003e\u003c/a\u003e Improve cache hit/miss reporting for cache.get()\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.1...8.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-unfold` from 0.104.1 to 0.105.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/unfoldadmin/django-unfold/releases\"\u003edjango-unfold's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.105.0\u003c/h2\u003e\n\u003ch2\u003ev0.105.0 (2026-09-04)\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eThis release is published under the MIT License.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAction decorator typing (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2239\"\u003e#2239\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/1da3c6e5298e002c9947d8eb377bac8cac15c810\"\u003e\u003ccode\u003e1da3c6e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAutocomplete dropdown search focus (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2220\"\u003e#2220\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/89f6fbd242c000acc27dfafcfc52038c14b07dab\"\u003e\u003ccode\u003e89f6fbd\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChangelist th wrapper_class (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2261\"\u003e#2261\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/58dcd8909fe26b60c97451744e6a18143f0aefcb\"\u003e\u003ccode\u003e58dcd89\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDashboard dark mode (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2248\"\u003e#2248\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/dc52ff01b9e1e87bbcc59ce2ae8fde2b5d34bf06\"\u003e\u003ccode\u003edc52ff0\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable changeform line fields (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2244\"\u003e#2244\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/73d090cde161646e3f2ddcb65b250a3bb0f82dcd\"\u003e\u003ccode\u003e73d090c\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable djangoql autofocus (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2233\"\u003e#2233\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/695aa780a99429790307a6297e7c839866328fe0\"\u003e\u003ccode\u003e695aa78\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable modal autofocus (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2228\"\u003e#2228\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/c7329b6052db0666ad700c2d51c2a72e8ef9afc5\"\u003e\u003ccode\u003ec7329b6\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable select for row action icon (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2242\"\u003e#2242\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/e64f568d0761b9e72c46b406a5f32481bdd8b56f\"\u003e\u003ccode\u003ee64f568\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMoney widget typing (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2240\"\u003e#2240\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/8f1422fe17d491ffe58107bbd7fff97fe005572a\"\u003e\u003ccode\u003e8f1422f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent displaying empty messages div (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2246\"\u003e#2246\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/ab063310f8eed9637c36960f3233cdea81028918\"\u003e\u003ccode\u003eab06331\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResolve order for active item in sidebar navigation (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2231\"\u003e#2231\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/e0bab543d9117d4680c1153a83de090563a294f8\"\u003e\u003ccode\u003ee0bab54\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCompiling tailwind (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2251\"\u003e#2251\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/c381c2e3a3f7f1977bcd5f50401c0f4786366b73\"\u003e\u003ccode\u003ec381c2e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eStacked inlines formatting (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2234\"\u003e#2234\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/da5db27f40c2f90e0e3d06607097d1297d2e556f\"\u003e\u003ccode\u003eda5db27\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAvatar badge (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2263\"\u003e#2263\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/981c203a7d40e829fd9518a6243bb02c8c3acd71\"\u003e\u003ccode\u003e981c203\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChart settings (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2262\"\u003e#2262\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/171ce5aff57e2c0056758c5c98a157c8c0889a00\"\u003e\u003ccode\u003e171ce5a\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChart x-axis display option (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2257\"\u003e#2257\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/4dc6ddc2a0320966da0766c778c7b1e6431da200\"\u003e\u003ccode\u003e4dc6ddc\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDashboard apps hover (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2254\"\u003e#2254\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/f6c8c6de1dce48cb4a71b3d53289a00aac093bf0\"\u003e\u003ccode\u003ef6c8c6d\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDefault dashboard scrolling history (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2249\"\u003e#2249\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/13ea6c06c8483dcbe8ce5abbdb7adf565558316d\"\u003e\u003ccode\u003e13ea6c0\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisplay decorator price formatter (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2264\"\u003e#2264\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/903e15ba83bbc8fc3e3ae6360970275627ed575e\"\u003e\u003ccode\u003e903e15b\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModal animations (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2229\"\u003e#2229\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/a38fe2f964fa5bd137989e182800876b76f2a0c9\"\u003e\u003ccode\u003ea38fe2f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/unfoldadmin/django-unfold/blob/main/CHANGELOG.md\"\u003edjango-unfold's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.105.0 (2026-09-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAction decorator typing (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2239\"\u003e#2239\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/1da3c6e5298e002c9947d8eb377bac8cac15c810\"\u003e\u003ccode\u003e1da3c6e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAutocomplete dropdown search focus\n(\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2220\"\u003e#2220\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/89f6fbd242c000acc27dfafcfc52038c14b07dab\"\u003e\u003ccode\u003e89f6fbd\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChangelist th wrapper_class (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2261\"\u003e#2261\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/58dcd8909fe26b60c97451744e6a18143f0aefcb\"\u003e\u003ccode\u003e58dcd89\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDashboard dark mode (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2248\"\u003e#2248\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/dc52ff01b9e1e87bbcc59ce2ae8fde2b5d34bf06\"\u003e\u003ccode\u003edc52ff0\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable changeform line fields (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2244\"\u003e#2244\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/73d090cde161646e3f2ddcb65b250a3bb0f82dcd\"\u003e\u003ccode\u003e73d090c\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable djangoql autofocus (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2233\"\u003e#2233\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/695aa780a99429790307a6297e7c839866328fe0\"\u003e\u003ccode\u003e695aa78\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable modal autofocus (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2228\"\u003e#2228\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/c7329b6052db0666ad700c2d51c2a72e8ef9afc5\"\u003e\u003ccode\u003ec7329b6\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable select for row action icon\n(\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2242\"\u003e#2242\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/e64f568d0761b9e72c46b406a5f32481bdd8b56f\"\u003e\u003ccode\u003ee64f568\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMoney widget typing (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2240\"\u003e#2240\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/8f1422fe17d491ffe58107bbd7fff97fe005572a\"\u003e\u003ccode\u003e8f1422f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent displaying empty messages div\n(\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2246\"\u003e#2246\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/ab063310f8eed9637c36960f3233cdea81028918\"\u003e\u003ccode\u003eab06331\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResolve order for active item in sidebar navigation\n(\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2231\"\u003e#2231\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/e0bab543d9117d4680c1153a83de090563a294f8\"\u003e\u003ccode\u003ee0bab54\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCompiling tailwind (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2251\"\u003e#2251\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/c381c2e3a3f7f1977bcd5f50401c0f4786366b73\"\u003e\u003ccode\u003ec381c2e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eStacked inlines formatting (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2234\"\u003e#2234\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/da5db27f40c2f90e0e3d06607097d1297d2e556f\"\u003e\u003ccode\u003eda5db27\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\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/unfoldadmin/django-unfold/commit/3d41ca4f79d0bc6f611309aaa3a70d38f9e95998\"\u003e\u003ccode\u003e3d41ca4\u003c/code\u003e\u003c/a\u003e 0.105.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/903e15ba83bbc8fc3e3ae6360970275627ed575e\"\u003e\u003ccode\u003e903e15b\u003c/code\u003e\u003c/a\u003e feat: display decorator price formatter (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2264\"\u003e#2264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/981c203a7d40e829fd9518a6243bb02c8c3acd71\"\u003e\u003ccode\u003e981c203\u003c/code\u003e\u003c/a\u003e feat: avatar badge (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2263\"\u003e#2263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/171ce5aff57e2c0056758c5c98a157c8c0889a00\"\u003e\u003ccode\u003e171ce5a\u003c/code\u003e\u003c/a\u003e feat: chart settings (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2262\"\u003e#2262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/58dcd8909fe26b60c97451744e6a18143f0aefcb\"\u003e\u003ccode\u003e58dcd89\u003c/code\u003e\u003c/a\u003e fix: changelist th wrapper_class (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2261\"\u003e#2261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/2681736d7fdf9002dd73eae52b74c47def1269db\"\u003e\u003ccode\u003e2681736\u003c/code\u003e\u003c/a\u003e chore(deps): bump \u003ca href=\"https://github.com/adamchainz/django-upgrade\"\u003ehttps://github.com/adamchainz/django-upgrade\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2259\"\u003e#2259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/e760aa451ebd80c8223d04d73b67c2563f8d0da3\"\u003e\u003ccode\u003ee760aa4\u003c/code\u003e\u003c/a\u003e chore(deps): bump \u003ca href=\"https://github.com/astral-sh/ruff-pre-commit\"\u003ehttps://github.com/astral-sh/ruff-pre-commit\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2258\"\u003e#2258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/4dc6ddc2a0320966da0766c778c7b1e6431da200\"\u003e\u003ccode\u003e4dc6ddc\u003c/code\u003e\u003c/a\u003e feat: chart x-axis display option (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2257\"\u003e#2257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/52580c0a44f176bc9eb7488b34ca25ee504e2b63\"\u003e\u003ccode\u003e52580c0\u003c/code\u003e\u003c/a\u003e chore: build styles (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2256\"\u003e#2256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/f6c8c6de1dce48cb4a71b3d53289a00aac093bf0\"\u003e\u003ccode\u003ef6c8c6d\u003c/code\u003e\u003c/a\u003e feat: dashboard apps hover (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2254\"\u003e#2254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/unfoldadmin/django-unfold/compare/0.104.1...0.105.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.16.3 to 0.16.6\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.16.6\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\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-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\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/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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.16.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\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-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\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/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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/22f65a2ab5052990503985c7c794de37598d531e\"\u003e\u003ccode\u003e22f65a2\u003c/code\u003e\u003c/a\u003e Bump 0.16.6 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28280\"\u003e#28280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7cc9f1ed53e5ce175f17fde3a75fe792ac41e8cd\"\u003e\u003ccode\u003e7cc9f1e\u003c/code\u003e\u003c/a\u003e [ty] Document \u003ccode\u003eCallableTypeKind\u003c/code\u003e variants (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28277\"\u003e#28277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/056ce07a895c217dab7929a616540c246cf8a078\"\u003e\u003ccode\u003e056ce07\u003c/code\u003e\u003c/a\u003e Add UV_LOCKED to all workflows (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28261\"\u003e#28261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6d6e35d03a72d23d3b0f23fb348692b03c9b81b6\"\u003e\u003ccode\u003e6d6e35d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80b4891b64cb916dce080e8fa15af5c2179d776a\"\u003e\u003ccode\u003e80b4891\u003c/code\u003e\u003c/a\u003e [ty] Temporarily disable tuple types in property tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28275\"\u003e#28275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3f7a54d1d7b9480a18d86a8211bf676354a2f8a0\"\u003e\u003ccode\u003e3f7a54d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/35656cf37d34f30116d4f4a9cb13853a6ad9fd0d\"\u003e\u003ccode\u003e35656cf\u003c/code\u003e\u003c/a\u003e [ty] Preserve deprecations on decorated callables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28256\"\u003e#28256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d2626c866ee08495cfa0da5236e130030d37e0cf\"\u003e\u003ccode\u003ed2626c8\u003c/code\u003e\u003c/a\u003e [ty] Reject missing attributes on \u003ccode\u003etype[]\u003c/code\u003e aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28267\"\u003e#28267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ee6a6d19aa0707df942febe9768488d39f383c8c\"\u003e\u003ccode\u003eee6a6d1\u003c/code\u003e\u003c/a\u003e [ty] Support ParamSpecs in \u003ccode\u003eConstraintSet\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28028\"\u003e#28028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f6a170080dab08f754ef086369a2623c70f753d\"\u003e\u003ccode\u003e7f6a170\u003c/code\u003e\u003c/a\u003e [ty] Move bound APIs to constraint owners (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28094\"\u003e#28094\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.3...0.16.6\"\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/ragusa87/membership-swiss-manager/pull/148","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ragusa87%2Fmembership-swiss-manager/issues/148","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/148/packages"},{"uuid":"5430259056","node_id":"PR_kwDOK-sKf88AAAABDN1soA","number":152,"state":"open","title":"Bump the pip-deps group across 1 directory with 16 updates","user":"dependabot[bot]","labels":["skip changelog","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-12T01:04:21.000Z","updated_at":"2026-09-12T01:06:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-deps","update_count":16,"packages":[{"name":"cairosvg","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"},{"name":"certifi","old_version":"2026.5.20","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.7","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cssselect2","old_version":"0.9.0","new_version":"0.10.1","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"markdown","old_version":"3.10.2","new_version":"3.10.3","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"mkdocs-material","old_version":"9.7.6","new_version":"9.7.7","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.10.0","new_version":"4.11.8","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pymdown-extensions","old_version":"10.21.3","new_version":"11.0.2","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"regex","old_version":"2026.5.9","new_version":"2026.9.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-deps group with 16 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [cairosvg](https://github.com/Kozea/CairoSVG) | `2.9.0` | `2.9.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.5.20` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.7` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.1` | `8.5.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.9.0` | `0.10.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.2` | `3.10.3` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.6` | `9.7.7` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.10.0` | `4.11.8` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.21.3` | `11.0.2` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.5.9` | `2026.9.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n\n\nUpdates `cairosvg` 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.5.20 to 2026.7.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f4bc676bc101fe2235846e37044e8c693d6cbaf4\"\u003e\u003ccode\u003ef4bc676\u003c/code\u003e\u003c/a\u003e 2026.07.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4c91f9c5f9b4676d40d2930025ba04d80dd536f6\"\u003e\u003ccode\u003e4c91f9c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.3.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/01a66c5cf32eadb8f03a0504c24cb44f6d581248\"\u003e\u003ccode\u003e01a66c5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/eb355f41cb71f71012ecf1a4d27a57d0ee2b1337\"\u003e\u003ccode\u003eeb355f4\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/474e6fc996d55b91632248da0bade702504e62dc\"\u003e\u003ccode\u003e474e6fc\u003c/code\u003e\u003c/a\u003e Include tests in the source distribution (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/424\"\u003e#424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a31ef39bb5906af7dc9729890f7e4e04e75afdae\"\u003e\u003ccode\u003ea31ef39\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.2.0 to 6.3.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/98eb2c76a9c7a8519912023dca00f762bbcd59af\"\u003e\u003ccode\u003e98eb2c7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.3 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d0ac52f3d93a514224197c7efb66c41b1beae5d1\"\u003e\u003ccode\u003ed0ac52f\u003c/code\u003e\u003c/a\u003e 2026.06.17 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/418\"\u003e#418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d46de621787c609158579929f44b91ce731d01b8\"\u003e\u003ccode\u003ed46de62\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.2 to 6.0.3 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6c183ec39d81135350dd44abd0e5daefc8e35b9d\"\u003e\u003ccode\u003e6c183ec\u003c/code\u003e\u003c/a\u003e fix: update Requests docs link to canonical URL (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.05.20...2026.07.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 2.0.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15 and support for C extensions generated by CFFI\nto target the new \u003ccode\u003eabi3t\u003c/code\u003e free-threaded ABI.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecffi-gen-src\u003c/code\u003e CLI to generate CFFI C extension source for alternate build backend support.\u003c/li\u003e\n\u003cli\u003eFixed crashes inside \u003ccode\u003e__delitem__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u0026quot;string too big\u0026quot; error under MSVC.\u003c/li\u003e\n\u003cli\u003eFixed mingw builds.\u003c/li\u003e\n\u003cli\u003eAdded support for arm64 iOS wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/d9f6f70adac5ca9f260abf5405cf4d0373767b65\"\u003e\u003ccode\u003ed9f6f70\u003c/code\u003e\u003c/a\u003e New release 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/02a7b0e32db93964b9756537110119d74aa23425\"\u003e\u003ccode\u003e02a7b0e\u003c/code\u003e\u003c/a\u003e Misc pre-2.1 release/packaging cleanup (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/1362e5ddc5417f1350200d4d6183c3eb3da9cc8d\"\u003e\u003ccode\u003e1362e5d\u003c/code\u003e\u003c/a\u003e Move cffi-gen-src release note to 2.1.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a797055125e049fd79483d0dcdf8cff59c64c6e4\"\u003e\u003ccode\u003ea797055\u003c/code\u003e\u003c/a\u003e Make error message when embedding version test fails more friendly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/f1f40a8e1667b9ef6cf8fe3c451829408feab018\"\u003e\u003ccode\u003ef1f40a8\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/dc62c93af7be7c535dc17f621de2bfc99490d3bd\"\u003e\u003ccode\u003edc62c93\u003c/code\u003e\u003c/a\u003e Delete missed cp39 Windows builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a34118009e64a7fed8ea49bdbad4d6a07494bb4f\"\u003e\u003ccode\u003ea341180\u003c/code\u003e\u003c/a\u003e Update version numbers to prepare for v2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/9f04d8506a6c7186dc3be7316f21aab042e075cb\"\u003e\u003ccode\u003e9f04d85\u003c/code\u003e\u003c/a\u003e Mark test using inet_ntoa as thread-unsafe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0...v2.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.7 to 3.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\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/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWall import time due to cascade codec imports for our multibyte first sort of iana supported codecs (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/742\"\u003e#742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUnnecessary json import at runtime (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/753\"\u003e#753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInverse capitalization not seen by noise detector (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/731\"\u003e#731\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/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a05917f87b5f71d6022d8abe2b0af239f65c1111\"\u003e\u003ccode\u003ea05917f\u003c/code\u003e\u003c/a\u003e chore: allow setuptools 84 builds (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/3325d87c3c73fa1a8746947151faaf9a41177543\"\u003e\u003ccode\u003e3325d87\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/792\"\u003e#792\u003c/a\u003e from jawah/update-cibuildwheel-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/77203b104216a6d578a682b5ac0514750aa988f7\"\u003e\u003ccode\u003e77203b1\u003c/code\u003e\u003c/a\u003e chore: reformat noxfile.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.7...3.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.4.1 to 8.5.0\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.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\ntime. {pr}\u003ccode\u003e3641\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eget_binary_stream\u003c/code\u003e and {func}\u003ccode\u003eget_text_stream\u003c/code\u003e are deprecated and\nwill be removed in Click 9.0. {issue}\u003ccode\u003e3481\u003c/code\u003e {pr}\u003ccode\u003e3695\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe following \u003ccode\u003eclick.utils\u003c/code\u003e names were never intentionally public and are\nnow private (\u003ccode\u003e_\u003c/code\u003e-prefixed). The old names remain available with a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e until Click 9.0: \u003ccode\u003eLazyFile\u003c/code\u003e, \u003ccode\u003eKeepOpenFile\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/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d\"\u003e\u003ccode\u003e8b19813\u003c/code\u003e\u003c/a\u003e Release version 8.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369\"\u003e\u003ccode\u003e2c8cd3a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac\"\u003e\u003ccode\u003e131c86a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb\"\u003e\u003ccode\u003ee1fd594\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3781\"\u003e#3781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781\"\u003e\u003ccode\u003ea1d8785\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4\"\u003e\u003ccode\u003e2103e15\u003c/code\u003e\u003c/a\u003e Forward all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e and improve flag detection (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4\"\u003e\u003ccode\u003ea6256bf\u003c/code\u003e\u003c/a\u003e Forwards all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e\"\u003e\u003ccode\u003e61b69e9\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8\"\u003e\u003ccode\u003e9835b0f\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7\"\u003e\u003ccode\u003ef36d58b\u003c/code\u003e\u003c/a\u003e Refactor pager stream handling (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3767\"\u003e#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.4.1...8.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cssselect2` from 0.9.0 to 0.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/cssselect2/releases\"\u003ecssselect2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix packaging\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport CSS Notes\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/Kozea/cssselect2/blob/main/docs/changelog.rst\"\u003ecssselect2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cp\u003eVersion 0.10.1\n..............\u003c/p\u003e\n\u003cp\u003eReleased on 2026-08-31.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix packaging\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.10.0\n..............\u003c/p\u003e\n\u003cp\u003eReleased on 2026-08-31.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport CSS Notes\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.9.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, support 3.14\u003c/li\u003e\n\u003cli\u003eSupport :host\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.8.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2025-03-05.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.8 and 3.9, support 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eHandle case-sensitive and case-insensitive attribute selectors\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.7.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-09-19.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport :has selector\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.6.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-04-15.\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/Kozea/cssselect2/commit/dc2690c6b434d87634ed5dc208c9de4038755463\"\u003e\u003ccode\u003edc2690c\u003c/code\u003e\u003c/a\u003e Version 0.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/c0b7638ab2eff2bc6c7cfb41f5891c0bf28e1845\"\u003e\u003ccode\u003ec0b7638\u003c/code\u003e\u003c/a\u003e Use VCS for packaging\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/3c865eda60a87f80ddc409621680dbc248f58687\"\u003e\u003ccode\u003e3c865ed\u003c/code\u003e\u003c/a\u003e Version 0.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/d1c8ba8fd29e552233dcef66efbeba6688840657\"\u003e\u003ccode\u003ed1c8ba8\u003c/code\u003e\u003c/a\u003e Update CI dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/869184347ed3ceb75fb82e45f963dc12a1edac31\"\u003e\u003ccode\u003e8691843\u003c/code\u003e\u003c/a\u003e Check more lint rules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/913dc6d1dfa41844210329c9732ec9fab95eca95\"\u003e\u003ccode\u003e913dc6d\u003c/code\u003e\u003c/a\u003e Allow to build package with flit 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/8b92c9f2fb4db7f8e4c1d39c64264a998bcd0563\"\u003e\u003ccode\u003e8b92c9f\u003c/code\u003e\u003c/a\u003e Use HTTP server for Doconfly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/b67fbfde986002fdc684a9b2d534b2bd35f21f89\"\u003e\u003ccode\u003eb67fbfd\u003c/code\u003e\u003c/a\u003e Support CSS Notes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/cssselect2/compare/0.9.0...0.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.18 to 3.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\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/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this 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/kjd/idna/commit/03a9a11dd8aecd4fea742cabe20f4d3d9ed82abb\"\u003e\u003ccode\u003e03a9a11\u003c/code\u003e\u003c/a\u003e Release 3.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2d2a7ef0c59210a48407b3dde6d884933cecf093\"\u003e\u003ccode\u003e2d2a7ef\u003c/code\u003e\u003c/a\u003e Pre-release 3.19rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5cce1308d148019c5fa0febceafa13e99cdacfe7\"\u003e\u003ccode\u003e5cce130\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/268\"\u003e#268\u003c/a\u003e from kjd/fix-std3-regex-alert\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/3914b75f3e4cbc11e59f92eeecdb16d10871e57f\"\u003e\u003ccode\u003e3914b75\u003c/code\u003e\u003c/a\u003e Split the STD3 disallowed-character range so uppercase is explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ce9fd98ac4073866db276e93834b259f2a5a4ac4\"\u003e\u003ccode\u003ece9fd98\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/267\"\u003e#267\u003c/a\u003e from kjd/housekeeping\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/809240c3cc9358c9c9c79b2d12ffe39e75ccfb0f\"\u003e\u003ccode\u003e809240c\u003c/code\u003e\u003c/a\u003e Fail CI when the license copyright year is behind the current year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d9e16c523d7d25dcc14100fa80f3e303404e09be\"\u003e\u003ccode\u003ed9e16c5\u003c/code\u003e\u003c/a\u003e Consolidate test fixtures, prune stale gitignore entries, and fix doc typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ef30feeed3a758e96286fdab0315a551f7f5e7d6\"\u003e\u003ccode\u003eef30fee\u003c/code\u003e\u003c/a\u003e Remove dead code and pare back superfluous comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b907913f854d26cc714f721c6c2cb626d41ac468\"\u003e\u003ccode\u003eb907913\u003c/code\u003e\u003c/a\u003e Tighten the version support and Unicode notes in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/6204cbe343ef438df7c58bc80b94d0f960991d90\"\u003e\u003ccode\u003e6204cbe\u003c/code\u003e\u003c/a\u003e Ignore local build artifacts and stop packaging stray tooling config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.18...v3.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.10.2 to 3.10.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eSetextHeaderProcessor\u003c/code\u003e regex to prevent mixed \u003ccode\u003e=\u003c/code\u003e and \u003ccode\u003e-\u003c/code\u003e chars in setext-style headers (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1606\"\u003e#1606\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd AI Policy to Contributing Guide.\u003c/li\u003e\n\u003cli\u003eOfficially document all included extensions as being in maintenance mode.\u003c/li\u003e\n\u003cli\u003eLink the Extension API documentation to the API Reference (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1612\"\u003e#1612\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.3] - 2026-07-30\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eSetextHeaderProcessor\u003c/code\u003e regex to prevent mixed \u003ccode\u003e=\u003c/code\u003e and \u003ccode\u003e-\u003c/code\u003e chars in setext-style headers (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1606\"\u003e#1606\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd AI Policy to Contributing Guide.\u003c/li\u003e\n\u003cli\u003eOfficially document all included extensions as being in maintenance mode.\u003c/li\u003e\n\u003cli\u003eLink the Extension API documentation to the API Reference (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1612\"\u003e#1612\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/bb50627dc07fde6ee5ed7478464062c537ebad2c\"\u003e\u003ccode\u003ebb50627\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/8453df010daf9547efcc20a05bb12c0e2fd2016a\"\u003e\u003ccode\u003e8453df0\u003c/code\u003e\u003c/a\u003e Update Extension API documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/93ac448b161deb5a4578c7f56bd5f5c39dc280c3\"\u003e\u003ccode\u003e93ac448\u003c/code\u003e\u003c/a\u003e Document that all extensions are in maintenance mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/d38fd4a6ee4ef897812bc481855a7f9d8a4ad4f1\"\u003e\u003ccode\u003ed38fd4a\u003c/code\u003e\u003c/a\u003e Create AI Policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/ddead47873e7918829e1d8b0eaee6ab725793cc9\"\u003e\u003ccode\u003eddead47\u003c/code\u003e\u003c/a\u003e Prevent mixed =/- chars in Setext-style headings\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.10.2...3.10.3\"\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.7.6 to 9.7.7\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.7\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is approaching end of life\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eMaterial for MkDocs is scheduled to reach end of life on November 5, 2026. Until then, maintenance is limited to critical bug fixes and security updates. After this date, the project will remain available on PyPI and GitHub, but no further maintenance is planned except in exceptional circumstances.\u003c/p\u003e\n\u003cp\u003eFor users looking for a long-term, actively developed successor, we're building \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e – a next-generation static site generator designed for technical documentation. If you're planning a new documentation project or evaluating your long-term options, we invite you to take a look.\u003c/p\u003e\n\u003cp\u003eOrganizations requiring support beyond this date are welcome to get in touch to discuss available options.\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\u003eFixed a DOM-based XSS vulnerability in search suggestions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/p\"\u003e\u003ccode\u003e@​p\u003c/code\u003e\u003c/a\u003e- for responsibly reporting this issue.\u003c/p\u003e\n\u003c/blockquote\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/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.7 (2026-07-17)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed DOM-based XSS vulnerability in search suggestions\u003c/li\u003e\n\u003c/ul\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\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/b3e6dd886a974aa8200759ecfd7db28c598a2894\"\u003e\u003ccode\u003eb3e6dd8\u003c/code\u003e\u003c/a\u003e Prepare 9.7.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/52fb6be8aafe326419f34dc94d3211e7bbfbfb25\"\u003e\u003ccode\u003e52fb6be\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/901e6335cc80b0f12e46a1e34bd85e983dd78a6e\"\u003e\u003ccode\u003e901e633\u003c/code\u003e\u003c/a\u003e Added \u003ccode\u003eSECURITY.md\u003c/code\u003e with EOL notice\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/5b36f2ac499a45905e246bc66bbee2858ef6556f\"\u003e\u003ccode\u003e5b36f2a\u003c/code\u003e\u003c/a\u003e Bump js-yaml from 4.1.1 to 4.2.0 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8598\"\u003e#8598\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/2d11e7bc92c59b86d6ac0da2e38044fb4befa6e0\"\u003e\u003ccode\u003e2d11e7b\u003c/code\u003e\u003c/a\u003e Bump form-data from 3.0.4 to 3.0.5 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8597\"\u003e#8597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/ae05a534a8c8e1c58eb6aa55d460d309bcfce22b\"\u003e\u003ccode\u003eae05a53\u003c/code\u003e\u003c/a\u003e Bump esbuild from 0.27.2 to 0.28.1 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8596\"\u003e#8596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/434af93166e5b90b78bba1295ca5a140fc67d0bc\"\u003e\u003ccode\u003e434af93\u003c/code\u003e\u003c/a\u003e Bump shell-quote from 1.7.3 to 1.8.4 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8593\"\u003e#8593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/4447cdadcbe8bc82570e9f1ae2b970f461b03b68\"\u003e\u003ccode\u003e4447cda\u003c/code\u003e\u003c/a\u003e Documentation (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8590\"\u003e#8590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/8f8d551c9c5296dfc2a5ede35047bfb491d66bc9\"\u003e\u003ccode\u003e8f8d551\u003c/code\u003e\u003c/a\u003e Updated copyright year (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8588\"\u003e#8588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/08d8514d491782b4ac46673bcfdedb2f6fc85f3d\"\u003e\u003ccode\u003e08d8514\u003c/code\u003e\u003c/a\u003e Bump fast-uri from 3.0.3 to 3.1.2 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8587\"\u003e#8587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.7.6...9.7.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 26.2 to 26.3\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.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a public \u003ccode\u003eVersionRange\u003c/code\u003e API and \u003ccode\u003eSpecifierSet.to_range()\u003c/code\u003e, representing the versions a specifier set accepts as an interval set that supports intersection, union, difference, complement, set relations, membership tests, and filtering. \u003ccode\u003eVersionRange.to_specifier_set()\u003c/code\u003e converts a range back to a \u003ccode\u003eSpecifierSet\u003c/code\u003e where a PEP 440 form exists. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1267\"\u003e#1267\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1270\"\u003e#1270\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 808: accept \u003ccode\u003eMetadata-Version: 2.6\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1194\"\u003e#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003elimit\u003c/code\u003e argument to \u003ccode\u003eparse_tag()\u003c/code\u003e for compressed tag sets. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eprefer_sdist_predicate\u003c/code\u003e argument to \u003ccode\u003ePylock.select()\u003c/code\u003e to prefer source distributions over wheels for selected packages. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1334\"\u003e#1334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epure_python_tags()\u003c/code\u003e to generate the pure-Python tags for a Python version without touching the running platform. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_subset()\u003c/code\u003e, \u003ccode\u003eSpecifierSet.is_superset()\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.is_disjoint()\u003c/code\u003e, which compare the versions two specifier sets accept. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1313\"\u003e#1313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBehavior adaptations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8; packaging now requires Python 3.9 or later. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1157\"\u003e#1157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer native \u003ccode\u003elinux_*\u003c/code\u003e platform tags over \u003ccode\u003emanylinux\u003c/code\u003e and \u003ccode\u003emusllinux\u003c/code\u003e tags on Linux. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for versions and specifiers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e instead of \u003ccode\u003eTypeError\u003c/code\u003e when \u003ccode\u003eVersion\u003c/code\u003e is given a non-string. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e for non-string pre-release letters passed to \u003ccode\u003eVersion.from_parts\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1241\"\u003e#1241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix an \u003ccode\u003eAttributeError\u003c/code\u003e when hashing internally trimmed versions. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e for post-release boundary intersections. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1257\"\u003e#1257\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for requirements and markers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eRequirement.__hash__\u003c/code\u003e consistent with \u003ccode\u003e__eq__\u003c/code\u003e for trailing-zero-equivalent specifiers (e.g. \u003ccode\u003efoo==1.0.0\u003c/code\u003e and \u003ccode\u003efoo==1.0.0.0\u003c/code\u003e), so equal requirements hash equal and deduplicate in sets and dicts. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1232\"\u003e#1232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize requested extra names before comparing or hashing requirements. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/644\"\u003e#644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve a \u003ccode\u003eRequirement\u003c/code\u003e's specifier \u003ccode\u003eprereleases\u003c/code\u003e override across a pickle round trip. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1204\"\u003e#1204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidRequirement\u003c/code\u003e instead of \u003ccode\u003eInvalidSpecifier\u003c/code\u003e when a requirement contains an invalid specifier. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1332\"\u003e#1332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify the error for post-release prefix wildcards like \u003ccode\u003e==1.0.post1.*\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1299\"\u003e#1299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve quoting semantics when serializing marker values, so round-tripped markers parse back to the same marker. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1213\"\u003e#1213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKeep the parentheses of a nested group when serializing markers. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eextra\u003c/code\u003e and \u003ccode\u003edependency_groups\u003c/code\u003e values in nested markers at parse time. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1246\"\u003e#1246\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eUndefinedComparison\u003c/code\u003e when a set-valued variable like \u003ccode\u003eextras\u003c/code\u003e is used outside the membership form. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1265\"\u003e#1265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eUndefinedEnvironmentName\u003c/code\u003e (a \u003ccode\u003eKeyError\u003c/code\u003e subclass) for missing environment keys during marker evaluation. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1276\"\u003e#1276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap malformed string literal errors in \u003ccode\u003eInvalidMarker\u003c/code\u003e / \u003ccode\u003eInvalidRequirement\u003c/code\u003e instead of leaking a low-level error. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1249\"\u003e#1249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject requirements and markers with a trailing line break. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1345\"\u003e#1345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for metadata and licenses\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCollect all \u003ccode\u003efrom_email\u003c/code\u003e validation errors into one \u003ccode\u003eExceptionGroup\u003c/code\u003e instead of raising the first. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1268\"\u003e#1268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept the UTF-8 charset case-insensitively in email payloads. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1330\"\u003e#1330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject malformed \u003ccode\u003eDescription-Content-Type\u003c/code\u003e values. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1329\"\u003e#1329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't rewrite user values that contain \u003ccode\u003e{field}\u003c/code\u003e placeholders in error messages. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1327\"\u003e#1327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRoute multipart email payloads to \u003ccode\u003eunparsed\u003c/code\u003e instead of asserting. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eInvalidMetadata\u003c/code\u003e and \u003ccode\u003eCyclicDependencyGroup\u003c/code\u003e picklable. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1328\"\u003e#1328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFold every line boundary \u003ccode\u003estr.splitlines\u003c/code\u003e recognizes when writing a header with \u003ccode\u003eRFC822Message\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1356\"\u003e#1356\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.3 - 2026-08-03\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFeatures:\n\u003cul\u003e\n\u003cli\u003eAdd a public :class:\u003ccode\u003e~packaging.ranges.VersionRange\u003c/code\u003e API and\u003cbr /\u003e\n:meth:\u003ccode\u003eSpecifierSet.to_range() \u0026amp;lt;packaging.specifiers.SpecifierSet.to_range\u0026amp;gt;\u003c/code\u003e,\u003cbr /\u003e\nrepresenting the versions a specifier set accepts as an interval set that\u003cbr /\u003e\nsupports intersection, union, difference, complement, set relations,\u003cbr /\u003e\nmembership tests, and filtering.\u003cbr /\u003e\n:meth:\u003ccode\u003e~packaging.ranges.VersionRange.to_specifier_set\u003c/code\u003e converts a range back\u003cbr /\u003e\nto a :class:\u003ccode\u003e~packaging.specifiers.SpecifierSet\u003c/code\u003e where a PEP 440 form exists.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1267\u003c/code\u003e, :pull:\u003ccode\u003e1270\u003c/code\u003e, :pull:\u003ccode\u003e1298\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 808: accept \u003ccode\u003eMetadata-Version: 2.6\u003c/code\u003e. (:pull:\u003ccode\u003e1194\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003elimit\u003c/code\u003e argument to \u003ccode\u003eparse_tag()\u003c/code\u003e for compressed tag sets.\u003cbr /\u003e\n(:issue:\u003ccode\u003e1220\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eprefer_sdist_predicate\u003c/code\u003e argument to \u003ccode\u003ePylock.select()\u003c/code\u003e to prefer\u003cbr /\u003e\nsource distributions over wheels for selected packages. (:pull:\u003ccode\u003e1334\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd :func:\u003ccode\u003e~packaging.tags.pure_python_tags\u003c/code\u003e to generate the pure-Python\u003cbr /\u003e\ntags for a Python version without touching the running platform.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1346\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd :meth:\u003ccode\u003eSpecifierSet.is_subset() \u0026amp;lt;packaging.specifiers.SpecifierSet.is_subset\u0026amp;gt;\u003c/code\u003e, :meth:\u003ccode\u003e~packaging.specifiers.SpecifierSet.is_superset\u003c/code\u003e,\u003cbr /\u003e\nand :meth:\u003ccode\u003e~packaging.specifiers.SpecifierSet.is_disjoint\u003c/code\u003e, which compare the\u003cbr /\u003e\nversions two specifier sets accept. (:pull:\u003ccode\u003e1313\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8; packaging now requires Python 3.9 or later.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1157\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer native \u003ccode\u003elinux_*\u003c/code\u003e platform tags over \u003ccode\u003emanylinux\u003c/code\u003e and \u003ccode\u003emusllinux\u003c/code\u003e\u003cbr /\u003e\ntags on Linux. (:issue:\u003ccode\u003e160\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes for versions and specifiers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e instead of \u003ccode\u003eTypeError\u003c/code\u003e when \u003ccode\u003eVersion\u003c/code\u003e is given a\u003cbr /\u003e\nnon-string. (:pull:\u003ccode\u003e1319\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e for non-string pre-release letters passed to\u003cbr /\u003e\n\u003ccode\u003eVersion.from_parts\u003c/code\u003e. (:pull:\u003ccode\u003e1241\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix an \u003ccode\u003eAttributeError\u003c/code\u003e when hashing internally trimmed versions.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1242\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e for post-release boundary\u003cbr /\u003e\nintersections. (:pull:\u003ccode\u003e1257\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes for requirements and markers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eRequirement.__hash__\u003c/code\u003e consistent with \u003ccode\u003e__eq__\u003c/code\u003e for\u003cbr /\u003e\ntrailing-zero-equivalent specifiers (e.g. \u003ccode\u003efoo==1.0.0\u003c/code\u003e and\u003cbr /\u003e\n\u003ccode\u003efoo==1.0.0.0\u003c/code\u003e), so equal requirements hash equal and deduplicate in\u003cbr /\u003e\nsets and dicts. (:pull:\u003ccode\u003e1232\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/929fd4b1410ac7ef61ef3f45b2f5d7e87711a9b5\"\u003e\u003ccode\u003e929fd4b\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f300ebf0c155e1f7ea6d62fba11dba4bac3d1944\"\u003e\u003ccode\u003ef300ebf\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pre-commit group with 5 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f91d97566a966177ad7ea5a7c703b12a7273e3b1\"\u003e\u003ccode\u003ef91d975\u003c/code\u003e\u003c/a\u003e ci(downstream): bump hatchling to 1.31.0 and fix its pytest rootdir (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/b1a7124fe3d40c3302c029e9eb01ac3fc3496a54\"\u003e\u003ccode\u003eb1a7124\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 7 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/2d873eb6002021a8c007c933fbdab58b37a5079b\"\u003e\u003ccode\u003e2d873eb\u003c/code\u003e\u003c/a\u003e fix(metadata): fold every line boundary when writing headers (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1356\"\u003e#1356\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/413d006fadf5b9b14d78ad444201d8189bff8c64\"\u003e\u003ccode\u003e413d006\u003c/code\u003e\u003c/a\u003e docs: changelog for 26.3 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1343\"\u003e#1343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4eb0753dba8fcaaac8eb75463374e448f0931558\"\u003e\u003ccode\u003e4eb0753\u003c/code\u003e\u003c/a\u003e docs(metadata): explain selective field validation (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1342\"\u003e#1342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/77e9ed42b6db9c5c011a5148047a356ebe42692a\"\u003e\u003ccode\u003e77e9ed4\u003c/code\u003e\u003c/a\u003e feat(tags): add pure Python tag generator (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/7cea5e88671ed14016e9ab3dd08eab064f596564\"\u003e\u003ccode\u003e7cea5e8\u003c/code\u003e\u003c/a\u003e ci: drop 3.13t on Windows (3.13.14t may fail to build, run takes 9 minutes) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/45a8b3402db5ff82158f2d0eabaf8447aa7a50bf\"\u003e\u003ccode\u003e45a8b34\u003c/code\u003e\u003c/a\u003e docs: add missing versionadded/versionchanged directives (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1344\"\u003e#1344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/26.2...26.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.2.0 to 12.3.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.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove non-image ImageCms modes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9697\"\u003e#9697\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\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd release notes for SBOM and performance improvements \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\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 security release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9741\"\u003e#9741\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 release notes for Python 3.15 beta wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9696\"\u003e#9696\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eImageFont can also be used with ImageText \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9597\"\u003e#9597\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdditional guidelines for security reports \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9659\"\u003e#9659\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFixed typo \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9636\"\u003e#9636\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9591\"\u003e#9591\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRevise development support information in README \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9583\"\u003e#9583\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 INCIDENT_RESPONSE.md \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9555\"\u003e#9555\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 STRIDE threat model to security docs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9562\"\u003e#9562\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 CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9556\"\u003e#9556\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 README with revised security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9553\"\u003e#9553\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 security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9552\"\u003e#9552\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9534\"\u003e#9534\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\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issue...\n\n_Description has been truncated_","html_url":"https://github.com/miniscruff/scopie/pull/152","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniscruff%2Fscopie/issues/152","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/152/packages"},{"uuid":"5426756788","node_id":"PR_kwDOQwz7ZM8AAAABDLEIaw","number":5212,"state":"closed","title":"chore(deps): bump the python-minor-patch group with 2 updates","user":"dependabot[bot]","labels":["loom:pr","tier:maintenance","dependencies"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2026-09-11T20:32:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-11T16:39:06.000Z","updated_at":"2026-09-11T20:32:28.000Z","time_to_close":14000,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":2,"packages":[{"name":"cairosvg","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"},{"name":"ruff","old_version":"0.16.5","new_version":"0.16.6","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 2 updates: [cairosvg](https://github.com/Kozea/CairoSVG) and [ruff](https://github.com/astral-sh/ruff).\n\nUpdates `cairosvg` 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.9.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.16.5 to 0.16.6\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.16.6\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\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-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\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/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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.16.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\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-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\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/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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/22f65a2ab5052990503985c7c794de37598d531e\"\u003e\u003ccode\u003e22f65a2\u003c/code\u003e\u003c/a\u003e Bump 0.16.6 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28280\"\u003e#28280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7cc9f1ed53e5ce175f17fde3a75fe792ac41e8cd\"\u003e\u003ccode\u003e7cc9f1e\u003c/code\u003e\u003c/a\u003e [ty] Document \u003ccode\u003eCallableTypeKind\u003c/code\u003e variants (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28277\"\u003e#28277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/056ce07a895c217dab7929a616540c246cf8a078\"\u003e\u003ccode\u003e056ce07\u003c/code\u003e\u003c/a\u003e Add UV_LOCKED to all workflows (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28261\"\u003e#28261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6d6e35d03a72d23d3b0f23fb348692b03c9b81b6\"\u003e\u003ccode\u003e6d6e35d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80b4891b64cb916dce080e8fa15af5c2179d776a\"\u003e\u003ccode\u003e80b4891\u003c/code\u003e\u003c/a\u003e [ty] Temporarily disable tuple types in property tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28275\"\u003e#28275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3f7a54d1d7b9480a18d86a8211bf676354a2f8a0\"\u003e\u003ccode\u003e3f7a54d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/35656cf37d34f30116d4f4a9cb13853a6ad9fd0d\"\u003e\u003ccode\u003e35656cf\u003c/code\u003e\u003c/a\u003e [ty] Preserve deprecations on decorated callables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28256\"\u003e#28256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d2626c866ee08495cfa0da5236e130030d37e0cf\"\u003e\u003ccode\u003ed2626c8\u003c/code\u003e\u003c/a\u003e [ty] Reject missing attributes on \u003ccode\u003etype[]\u003c/code\u003e aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28267\"\u003e#28267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ee6a6d19aa0707df942febe9768488d39f383c8c\"\u003e\u003ccode\u003eee6a6d1\u003c/code\u003e\u003c/a\u003e [ty] Support ParamSpecs in \u003ccode\u003eConstraintSet\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28028\"\u003e#28028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f6a170080dab08f754ef086369a2623c70f753d\"\u003e\u003ccode\u003e7f6a170\u003c/code\u003e\u003c/a\u003e [ty] Move bound APIs to constraint owners (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28094\"\u003e#28094\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.5...0.16.6\"\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/rjwalters/kicad-tools/pull/5212","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rjwalters%2Fkicad-tools/issues/5212","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5212/packages"},{"uuid":"4363383155","node_id":"PR_kwDORvyigs7XXkaA","number":12,"state":"open","title":"deps: update cairosvg requirement from \u003e=2.7 to \u003e=2.9.0","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-01T07:32:08.000Z","updated_at":"2026-05-01T07:32:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: update","packages":[{"name":"cairosvg","old_version":"\u003e=2.7","new_version":"\u003e=2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [cairosvg](https://github.com/Kozea/CairoSVG) 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with relatively small inputs.\nCairoSVG now stops rendering when more than 100k use tags are rendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.7.1 released on 2023-08-05\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDon’t draw clipPath when defined after reference\u003c/li\u003e\n\u003cli\u003eHandle evenodd fill rule with gradients and patterns\u003c/li\u003e\n\u003cli\u003eFix ratio and clip for \u0026quot;image\u0026quot; tags with no size\u003c/li\u003e\n\u003cli\u003eHandle data-URLs in safe mode\u003c/li\u003e\n\u003cli\u003eUse f-strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 2.7.0 released on 2023-03-20\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.0...2.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/toalba/wows-renderer/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/toalba%2Fwows-renderer/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"4331467456","node_id":"PR_kwDOQke9fs7Vvxgp","number":2,"state":"closed","title":"Chore(deps): Bump cairosvg from 2.7.1 to 2.9.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-26T18:25:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-26T17:11:26.000Z","updated_at":"2026-04-26T18:25:48.000Z","time_to_close":4460,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.7.1 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with relatively small inputs.\nCairoSVG now stops rendering when more than 100k use tags are rendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/bvolpato/homepage-fork/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/bvolpato/homepage-fork/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvolpato%2Fhomepage-fork/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"},{"uuid":"4170747933","node_id":"PR_kwDOQ3AX587Onzf5","number":323,"state":"open","title":"chore(deps)(deps-dev): bump the dev-dependencies group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["automated","dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-30T13:27:21.000Z","updated_at":"2026-04-06T12:51:15.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps-dev): bump","group_name":"dev-dependencies","update_count":11,"packages":[{"name":"ty","old_version":"0.0.18","new_version":"0.0.24","repository_url":"https://github.com/astral-sh/ty"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.7","repository_url":"https://github.com/astral-sh/ruff"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"arize-phoenix-client","old_version":"1.29.0","new_version":"2.1.0","repository_url":"https://github.com/Arize-ai/phoenix"},{"name":"mkdocs-material","old_version":"9.7.2","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-gen-files","old_version":"0.6.0","new_version":"0.6.1","repository_url":"https://github.com/oprypin/mkdocs-gen-files"},{"name":"mkdocs-literate-nav","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/oprypin/mkdocs-literate-nav"},{"name":"mkdocs-section-index","old_version":"0.3.10","new_version":"0.3.11","repository_url":"https://github.com/oprypin/mkdocs-section-index"},{"name":"cairosvg","old_version":"2.8.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"},{"name":"gepa","old_version":"0.1.0","new_version":"0.1.1","repository_url":"https://github.com/gepa-ai/gepa"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 11 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ty](https://github.com/astral-sh/ty) | `0.0.18` | `0.0.24` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.4` | `0.15.7` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [arize-phoenix-client](https://github.com/Arize-ai/phoenix) | `1.29.0` | `2.1.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.2` | `9.7.6` |\n| [mkdocs-gen-files](https://github.com/oprypin/mkdocs-gen-files) | `0.6.0` | `0.6.1` |\n| [mkdocs-literate-nav](https://github.com/oprypin/mkdocs-literate-nav) | `0.6.2` | `0.6.3` |\n| [mkdocs-section-index](https://github.com/oprypin/mkdocs-section-index) | `0.3.10` | `0.3.11` |\n| [cairosvg](https://github.com/Kozea/CairoSVG) | `2.8.2` | `2.9.0` |\n| [gepa](https://github.com/gepa-ai/gepa) | `0.1.0` | `0.1.1` |\n\n\nUpdates `ty` from 0.0.18 to 0.0.24\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.24\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure \u003ccode\u003eTypedDict\u003c/code\u003e subscripts for unknown keys return \u003ccode\u003eUnknown\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23926\"\u003e#23926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix overflow with recursive \u003ccode\u003eTypeIs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23784\"\u003e#23784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix variance of frozen dataclass-transform models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23931\"\u003e#23931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove \u003ca href=\"https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_semanticTokens\"\u003esemantic token\u003c/a\u003e classification for attribute access on union types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23841\"\u003e#23841\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and correctness by avoiding inferring intersection types for call arguments as a result of bidirectional inference (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow keyword arguments when unpacking dictionary instances (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23436\"\u003e#23436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDiscover \u003ccode\u003e/usr/local/lib\u003c/code\u003e dist-packages on Debian/Ubuntu (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23797\"\u003e#23797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23963\"\u003e#23963\u003c/a\u003e). \u003ca href=\"https://github.com/python/typeshed/compare/fa659b1def704dea3dc8e25c7857b23eac69df4d...f8f0794d0fe249c06dc9f31a004d85be6cca6ced\"\u003eTypeshed diff\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ty 0.0.24\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/ty/releases/download/0.0.24/ty-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/ty/releases/download/0.0.24/ty-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ty 0.0.24\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/ty/releases/download/0.0.24/ty-aarch64-apple-darwin.tar.gz\"\u003ety-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/ty/releases/download/0.0.24/ty-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/ty/releases/download/0.0.24/ty-x86_64-apple-darwin.tar.gz\"\u003ety-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/ty/releases/download/0.0.24/ty-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/ty/releases/download/0.0.24/ty-aarch64-pc-windows-msvc.zip\"\u003ety-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/ty/releases/download/0.0.24/ty-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/ty/releases/download/0.0.24/ty-i686-pc-windows-msvc.zip\"\u003ety-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/ty/releases/download/0.0.24/ty-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://releases.astral.sh/github/ty/releases/download/0.0.24/ty-x86_64-pc-windows-msvc.zip\"\u003ety-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://releases.astral.sh/github/ty/releases/download/0.0.24/ty-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://releases.astral.sh/github/ty/releases/download/0.0.24/ty-aarch64-unknown-linux-gnu.tar.gz\"\u003ety-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://releases.astral.sh/github/ty/releases/download/0.0.24/ty-aarch64-unknown-linux-gnu.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/ty/releases/download/0.0.24/ty-i686-unknown-linux-gnu.tar.gz\"\u003ety-i686-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ty/releases/download/0.0.24/ty-i686-unknown-linux-gnu.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/ty/releases/download/0.0.24/ty-powerpc64-unknown-linux-gnu.tar.gz\"\u003ety-powerpc64-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePPC64 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ty/releases/download/0.0.24/ty-powerpc64-unknown-linux-gnu.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/ty/releases/download/0.0.24/ty-powerpc64le-unknown-linux-gnu.tar.gz\"\u003ety-powerpc64le-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePPC64LE Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ty/releases/download/0.0.24/ty-powerpc64le-unknown-linux-gnu.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/ty/releases/download/0.0.24/ty-s390x-unknown-linux-gnu.tar.gz\"\u003ety-s390x-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eS390x Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ty/releases/download/0.0.24/ty-s390x-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/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.24\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure \u003ccode\u003eTypedDict\u003c/code\u003e subscripts for unknown keys return \u003ccode\u003eUnknown\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23926\"\u003e#23926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix overflow with recursive \u003ccode\u003eTypeIs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23784\"\u003e#23784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix variance of frozen dataclass-transform models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23931\"\u003e#23931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove \u003ca href=\"https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_semanticTokens\"\u003esemantic token\u003c/a\u003e classification for attribute access on union types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23841\"\u003e#23841\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and correctness by avoiding inferring intersection types for call arguments as a result of bidirectional inference (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow keyword arguments when unpacking dictionary instances (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23436\"\u003e#23436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDiscover \u003ccode\u003e/usr/local/lib\u003c/code\u003e dist-packages on Debian/Ubuntu (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23797\"\u003e#23797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23963\"\u003e#23963\u003c/a\u003e). \u003ca href=\"https://github.com/python/typeshed/compare/fa659b1def704dea3dc8e25c7857b23eac69df4d...f8f0794d0fe249c06dc9f31a004d85be6cca6ced\"\u003eTypeshed diff\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce fast path for protocol non-assignability (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23952\"\u003e#23952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved generic-solver performance in cases involving overload sets (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23881\"\u003e#23881\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/Geo5\"\u003e\u003ccode\u003e@​Geo5\u003c/code\u003e\u003c/a\u003e\u003c/li\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/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dcreager\"\u003e\u003ccode\u003e@​dcreager\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollema\"\u003e\u003ccode\u003e@​ollema\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\u003ch2\u003e0.0.23\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-13.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix false-positive diagnostics for PEP-604 union annotations on attribute targets on Python 3.9 when \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e is active (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23915\"\u003e#23915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edataclass_transform\u003c/code\u003e: Respect \u003ccode\u003ekw_only\u003c/code\u003e overwrites in dataclasses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23930\"\u003e#23930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix too-many-cycle panics when inferring loop variables with \u003ccode\u003eLiteral\u003c/code\u003e types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23875\"\u003e#23875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_foldingRange\"\u003efolding range\u003c/a\u003e classification of lines starting with \u003ccode\u003e#\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23831\"\u003e#23831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_foldingRange\"\u003efolding ranges\u003c/a\u003e for notebooks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23830\"\u003e#23830\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/876233049afc2530181f5b8af390c6d57c65bb80\"\u003e\u003ccode\u003e8762330\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.24 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/a6f24e14c0d41b17b44ea514b230a25bad411b65\"\u003e\u003ccode\u003ea6f24e1\u003c/code\u003e\u003c/a\u003e Update prek dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3045\"\u003e#3045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/95150e7634e4b863223cea12e96f48baa23625d3\"\u003e\u003ccode\u003e95150e7\u003c/code\u003e\u003c/a\u003e Typing FAQ: New entry explaining invariance (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3073\"\u003e#3073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/bc9e8a839385b3ee5a45d3df6e5f79885dcad17d\"\u003e\u003ccode\u003ebc9e8a8\u003c/code\u003e\u003c/a\u003e Remove the repository code of conduct in favor of the organization one (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/3d12b2e9f81cd98ccc27f0285f8056da9bb999d5\"\u003e\u003ccode\u003e3d12b2e\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v7.6.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3054\"\u003e#3054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/64fe9c2fd1610cc6b25b1dfda0a8bb7694fc9467\"\u003e\u003ccode\u003e64fe9c2\u003c/code\u003e\u003c/a\u003e Update actions/attest-build-provenance action to v4 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3046\"\u003e#3046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/86d05eb2a7da77605d42ad86a5adbde131431047\"\u003e\u003ccode\u003e86d05eb\u003c/code\u003e\u003c/a\u003e Update docker/setup-buildx-action action to v4 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/eb3f320a525075daa431a0ed19d5cbff12dc5c2b\"\u003e\u003ccode\u003eeb3f320\u003c/code\u003e\u003c/a\u003e Update docker/metadata-action action to v6 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3049\"\u003e#3049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/7da93b86f69724734cfa4a90d3df3ca3b44bc4e4\"\u003e\u003ccode\u003e7da93b8\u003c/code\u003e\u003c/a\u003e Update docker/login-action action to v4 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/fa4db72937dacb89a6271327a7433b01322136f2\"\u003e\u003ccode\u003efa4db72\u003c/code\u003e\u003c/a\u003e Update docker/build-push-action action to v7 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ty/compare/0.0.18...0.0.24\"\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.4 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\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/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\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.7/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.7/ruff-installer.ps1 | iex\u0026quot;\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\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/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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 `arize-phoenix-client` from 1.29.0 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Arize-ai/phoenix/releases\"\u003earize-phoenix-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003earize-phoenix-client: v2.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v2.0.1...arize-phoenix-client-v2.1.0\"\u003e2.1.0\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add span filter params to getSpans (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12203\"\u003e#12203\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/91949d7aa63acff7110ec79518d9ad9ce711e277\"\u003e91949d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003earize-phoenix-client: v2.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v2.0.0...arize-phoenix-client-v2.0.1\"\u003e2.0.1\u003c/a\u003e (2026-03-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add server version gating with capability requirements (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12122\"\u003e#12122\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/9769f906ae0caef8e19f88e25e0ea545ee399d72\"\u003e9769f90\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003earize-phoenix-client: v2.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v1.31.0...arize-phoenix-client-v2.0.0\"\u003e2.0.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e \u003ccode\u003eclient.annotations\u003c/code\u003e has been removed. Use \u003ccode\u003eclient.spans\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Cerebras, Fireworks, Groq, and Moonshot as first-class providers (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11938\"\u003e#11938\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/df94203fa621bae9928d96249382380aa4be5443\"\u003edf94203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd Perplexity and Together AI as built-in providers in the playground (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11952\"\u003e#11952\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/aeefe1970405c7fcb48254dce92dcfc1824fcaa3\"\u003eaeefe19\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd trace_ids parameter to client getSpans methods (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11945\"\u003e#11945\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/6d896e32ce1d4ed2038342ae67d678de2163e8f0\"\u003e6d896e3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add session conversation API to Python and TypeScript clients (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11974\"\u003e#11974\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/83b7f68782b4994a741244c478d5d561e4817bcb\"\u003e83b7f68\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e propagate parent_id filter to JS and Python clients (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11975\"\u003e#11975\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/d951320f704545a516ccd63d2acbc88a35685491\"\u003ed951320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e remove deprecated \u003ccode\u003eclient.annotations\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11983\"\u003e#11983\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/6203c31fc59579dfbe927d47ca0d03d162d7fb77\"\u003e6203c31\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eserver:\u003c/strong\u003e add DELETE session API  (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11976\"\u003e#11976\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/d4a865ae6bc1511b2b433b408de2f75bf71abc7b\"\u003ed4a865a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003earize-phoenix-client: v1.31.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v1.30.0...arize-phoenix-client-v1.31.0\"\u003e1.31.0\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add session retrieval methods to Python client SDK (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11879\"\u003e#11879\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/3669813c7486b128d8858de6ef1cffa3e8d5c020\"\u003e3669813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add timeout and list_sessions alias to sessions API (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11897\"\u003e#11897\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/a4befc0f6bfe3a0641eca58eb2f35226ec54f4d6\"\u003ea4befc0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003earize-phoenix-client: v1.30.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v1.29.1...arize-phoenix-client-v1.30.0\"\u003e1.30.0\u003c/a\u003e (2026-03-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd GET endpoints for sessions REST API (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11724\"\u003e#11724\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/2a1f14846cec30bb9b892114f3510e740154bcc0\"\u003e2a1f148\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/Arize-ai/phoenix/blob/main/CHANGELOG.md\"\u003earize-phoenix-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-v12.0.0...arize-phoenix-v12.1.0\"\u003e12.1.0\u003c/a\u003e (2025-09-30)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecomponents:\u003c/strong\u003e switch (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9678\"\u003e#9678\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/ac061b5b73f8a608f50415be73c287e8b427d6f3\"\u003eac061b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edataset label graphql(create, delete, read) (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9702\"\u003e#9702\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/f52744dd1e6fbe3eb3742457241246f849dfe9b9\"\u003ef52744d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emigrate from bitnami chart to groundhog2k (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9583\"\u003e#9583\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/f3be6317c960a66916de568dea98dcf914521221\"\u003ef3be631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Claude Sonnet 4.5 (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9700\"\u003e#9700\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/2056f906938b5894b22cecaaaeaf79dec7712d02\"\u003e2056f90\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emissing root path for logout (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9707\"\u003e#9707\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/e14f4f6dd33472a048a19df26881d8184822388f\"\u003ee14f4f6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplayground:\u003c/strong\u003e ensure playground dataset examples load when first switching to dataset mode (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9710\"\u003e#9710\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/452b06088af30ba6e09458ffa265e3e1bb082eeb\"\u003e452b060\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-v11.38.0...arize-phoenix-v12.0.0\"\u003e12.0.0\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eversion 12 (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9695\"\u003e#9695\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd annotation columns to sessions table (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9551\"\u003e#9551\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/212513dce2cdfcff5411ddd9dc350da0b131e21f\"\u003e212513d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd db table and graphql mutations for session annotations (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/8993\"\u003e#8993\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/092c067616477888e571635bcb575c6f97baf6e2\"\u003e092c067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd junction table for taking snapshots of examples when inserting an experiment (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9609\"\u003e#9609\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/f5714416052560e96182d01e23286032de575cb1\"\u003ef571441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd user_id on datasets and dataset_versions table (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9650\"\u003e#9650\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/0230f8f38a7a1cb5ba91b7035d411d885fffa97b\"\u003e0230f8f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAssign examples to dataset splits (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9606\"\u003e#9606\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/ec3f6fd5044b3e3fae1f04b5e56f5cc9d2692560\"\u003eec3f6fd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclient methods for adding trace and session annotations (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9369\"\u003e#9369\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/e9b29ef0b50eb30c64d7e3c557d6264d5652d3fc\"\u003ee9b29ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edataset labels migration (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9409\"\u003e#9409\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/77011436e85f7ad35e2e4d032d248d1a4ad72be4\"\u003e7701143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edataset split and examples migration (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9360\"\u003e#9360\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/045f8a13b0fdc3af030d176939624e35add3f78f\"\u003e045f8a1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDataset Splits Add Dialog UI (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9601\"\u003e#9601\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/914cf640409936d378b6b9b959573b5858017ac5\"\u003e914cf64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edataset splits backend (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9490\"\u003e#9490\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/dc45cd2f44f506592cbd98d89b38e044d5447026\"\u003edc45cd2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edb:\u003c/strong\u003e add row for viewer role (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9648\"\u003e#9648\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/efbbf521c9b503bfa188eecef0228a1eb56c2d60\"\u003eefbbf52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edisplay splits on examples table (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9602\"\u003e#9602\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/694d1e088d59c2aada71a822e2ae468aa3373047\"\u003e694d1e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExperiment migration (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9279\"\u003e#9279\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/7151cd5c0e4234461f6a6c8bb5069a16565c47e2\"\u003e7151cd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexperiment-tags on experiment and datasets (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9406\"\u003e#9406\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/5afe0dc9c3c7cf0bd86a18e0513553ec22654db8\"\u003e5afe0dc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperiments:\u003c/strong\u003e show repetitions in the table (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9669\"\u003e#9669\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/dfb05cbf8beff4820bd8bd173ba5a2429db7137d\"\u003edfb05cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epin the minimum version of the client (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9666\"\u003e#9666\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/54ffb45923c3e24491f3f08ed935ca3e61b6f254\"\u003e54ffb45\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePlayground migration experiments record user_id (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9292\"\u003e#9292\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/3b0ca07da1e963c766b7612099a353fbc505c05a\"\u003e3b0ca07\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate to google genai sdk (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9591\"\u003e#9591\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/b50e82a0ff20cc83a380125b38e7d783e84effcc\"\u003eb50e82a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse composite primary key for crosswalk tables (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9636\"\u003e#9636\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/cc0eac1dd8df2a6323e2022dbd74ab674f992aea\"\u003ecc0eac1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eversion 12 (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9695\"\u003e#9695\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/8529fe31f7ef431c7074a838ce08285800058805\"\u003e8529fe3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd big int indexes and user id indexes (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9693\"\u003e#9693\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/7c3393692939a5981881fd6036efc032cf53f642\"\u003e7c33936\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/Arize-ai/phoenix/commit/ffcfaaef0a0d42b8142a6ada7b74a1151780c3e8\"\u003e\u003ccode\u003effcfaae\u003c/code\u003e\u003c/a\u003e chore(main): release arize-phoenix-client 2.1.0 (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12205\"\u003e#12205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/7507b49283ca1838a8d6cd4132749ad28cfef89c\"\u003e\u003ccode\u003e7507b49\u003c/code\u003e\u003c/a\u003e chore(js): update versions (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12204\"\u003e#12204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/91949d7aa63acff7110ec79518d9ad9ce711e277\"\u003e\u003ccode\u003e91949d7\u003c/code\u003e\u003c/a\u003e feat(client): add span filter params to getSpans (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12203\"\u003e#12203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/c32665a82df905ac564eb7a58e271311ae3cc511\"\u003e\u003ccode\u003ec32665a\u003c/code\u003e\u003c/a\u003e refactor: remove light darker tokens (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12182\"\u003e#12182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/42a7a1b2920580f4dbd3182df88575b277fe2b02\"\u003e\u003ccode\u003e42a7a1b\u003c/code\u003e\u003c/a\u003e feat(onboarding): add Python integration snippets (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12197\"\u003e#12197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/6d4e8d7e863291cc60ceca7704d5588ddbfdead1\"\u003e\u003ccode\u003e6d4e8d7\u003c/code\u003e\u003c/a\u003e feat: Add TypeScript onboarding snippets for LangChain, OpenAI, Anthropic, an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/565041c17d5a2027fe796d2f84c44e39af0948a3\"\u003e\u003ccode\u003e565041c\u003c/code\u003e\u003c/a\u003e docs: refine llms.txt: expand coverage, drop integrations, optimize concisene...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/35891a26f7ad8f747c3f03ae3999e954b252ce9f\"\u003e\u003ccode\u003e35891a2\u003c/code\u003e\u003c/a\u003e chore(js): update versions (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12190\"\u003e#12190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/c8e618770c46c9ec350ade8669da28a584f951a8\"\u003e\u003ccode\u003ec8e6187\u003c/code\u003e\u003c/a\u003e chore(ui): enable jsx-a11y plugin and fix storybook violations (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11684\"\u003e#11684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/d320b93eb23410505a02cebea68925c1c712612a\"\u003e\u003ccode\u003ed320b93\u003c/code\u003e\u003c/a\u003e fix: migrate llms.txt to standard llmstxt.org format (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12189\"\u003e#12189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v1.29.0...arize-phoenix-client-v2.1.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.7.2 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/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/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.7.2...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-gen-files` from 0.6.0 to 0.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/releases\"\u003emkdocs-gen-files's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/pull/42\"\u003eoprypin/mkdocs-gen-files#42\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.1\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/05c38bb46caa8d6550da54e291bddc59c4610d07\"\u003e\u003ccode\u003e05c38bb\u003c/code\u003e\u003c/a\u003e v0.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/d2850806e39047a7ad4ca7c415adb56d3a26b2cc\"\u003e\u003ccode\u003ed285080\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/issues/42\"\u003e#42\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/dcc896d45a2c31ddbf8c78317020647631ba38cd\"\u003e\u003ccode\u003edcc896d\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-literate-nav` from 0.6.2 to 0.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/releases\"\u003emkdocs-literate-nav's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/pull/39\"\u003eoprypin/mkdocs-literate-nav#39\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\u003ehttps://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/b91268c263f61e38a7e27f77ccf38ec287e0c0b5\"\u003e\u003ccode\u003eb91268c\u003c/code\u003e\u003c/a\u003e v0.6.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/cee9ec49a1523036081378a39bda9fa014432526\"\u003e\u003ccode\u003ecee9ec4\u003c/code\u003e\u003c/a\u003e Exclude properdocs when testing minimal dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/ea523f5864f59fb7939f84cd4400df67280ad52c\"\u003e\u003ccode\u003eea523f5\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/issues/39\"\u003e#39\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/258b15a15a3e25cedc816d0a5a971acfdb86541e\"\u003e\u003ccode\u003e258b15a\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-section-index` from 0.3.10 to 0.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/releases\"\u003emkdocs-section-index's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/pull/27\"\u003eoprypin/mkdocs-section-index#27\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ehttps://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/a8235f6f8eb5927b966a3aaea8afe5fa161ecece\"\u003e\u003ccode\u003ea8235f6\u003c/code\u003e\u003c/a\u003e v0.3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/ac66dfda53834d79ce8e0af6f340dddd7cde2bf9\"\u003e\u003ccode\u003eac66dfd\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/issues/27\"\u003e#27\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/32866cd83993ee3eefbac0fcc13911692796d8f6\"\u003e\u003ccode\u003e32866cd\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cairosvg` from 2.8.2 to 2.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with relatively small inputs.\nCairoSVG now stops rendering when more than 100k use tags are rendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.8.2...2.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gepa` from 0.1.0 to 0.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gepa-ai/gepa/releases\"\u003egepa's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.1.1\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eCandidate Tree Visualization\u003c/strong\u003e — GEPA now generates an interactive HTML lineage tree of all candidates explored during optimization. Nodes are color-coded by role (best, Pareto front, seed) with hover previews and click-to-pin tooltips for reading full prompt text. The tree is...\n\n_Description has been truncated_","html_url":"https://github.com/Alberto-Codes/gepa-adk/pull/323","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alberto-Codes%2Fgepa-adk/issues/323","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/323/packages"},{"uuid":"4094133703","node_id":"PR_kwDOJKxOys7Lfe9y","number":49,"state":"open","title":"build(deps): bump cairosvg from 2.5.2 to 2.9.0 in /examples","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-03-18T10:17:35.000Z","updated_at":"2026-03-18T10:17:41.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"cairosvg","old_version":"2.5.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":"/examples","ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.5.2 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with relatively small inputs.\nCairoSVG now stops rendering when more than 100k use tags are rendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDon’t draw clipPath when defined after reference\u003c/li\u003e\n\u003cli\u003eHandle evenodd fill rule with gradients and patterns\u003c/li\u003e\n\u003cli\u003eFix ratio and clip for \u0026quot;image\u0026quot; tags with no size\u003c/li\u003e\n\u003cli\u003eHandle data-URLs in safe mode\u003c/li\u003e\n\u003cli\u003eUse f-strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eWhen processing SVG files, CairoSVG could access other files online, possibly leading to very long renderings or other security problems.\u003c/p\u003e\n\u003cp\u003eThis feature is now disabled by default. External resources can still be accessed using the \u0026quot;unsafe\u0026quot; or the \u0026quot;url_fetcher\u0026quot; parameter.\u003c/p\u003e\n\u003ch2\u003e2.6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.5 and 3.6, add support of Python 3.9, 3.10 and 3.11\u003c/li\u003e\n\u003cli\u003eSupport crispEdges value for text antialiasing\u003c/li\u003e\n\u003cli\u003eDon’t crash when including CMYK images\u003c/li\u003e\n\u003cli\u003eOnly update docstrings when not optimized\u003c/li\u003e\n\u003cli\u003eDon’t restore current point after empty paths\u003c/li\u003e\n\u003cli\u003eAssume that 1ch equals 0.5em\u003c/li\u003e\n\u003cli\u003eFix various deprecation warnings\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.7.1 released on 2023-08-05\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDon’t draw clipPath when defined after reference\u003c/li\u003e\n\u003cli\u003eHandle evenodd fill rule with gradients and patterns\u003c/li\u003e\n\u003cli\u003eFix ratio and clip for \u0026quot;image\u0026quot; tags with no size\u003c/li\u003e\n\u003cli\u003eHandle data-URLs in safe mode\u003c/li\u003e\n\u003cli\u003eUse f-strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 2.7.0 released on 2023-03-20\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.5.2...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.5.2\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/ncusi/secret_life_of_CVEs/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/ncusi/secret_life_of_CVEs/pull/49","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncusi%2Fsecret_life_of_CVEs/issues/49","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/49/packages"},{"uuid":"4076150924","node_id":"PR_kwDOQMfvCM7Knlep","number":68,"state":"closed","title":"chore(deps): Bump cairosvg from 2.8.2 to 2.9.0","user":"dependabot[bot]","labels":["Container Available","dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-03-15T02:51:14.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-14T16:17:09.000Z","updated_at":"2026-03-15T02:51:22.000Z","time_to_close":38045,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","packages":[{"name":"cairosvg","old_version":"2.8.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.8.2 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.8.2...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.8.2\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/lexfrei/minecraft-operator/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/lexfrei/minecraft-operator/pull/68","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/lexfrei%2Fminecraft-operator/issues/68","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/68/packages"},{"uuid":"4073216255","node_id":"PR_kwDOGAk_BM7KePbp","number":429,"state":"open","title":"build(deps): bump cairosvg from 2.8.2 to 2.9.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-13T20:16:49.000Z","updated_at":"2026-03-16T04:02:55.448Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"cairosvg","old_version":"2.8.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.8.2 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.8.2...2.9.0\"\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=cairosvg\u0026package-manager=uv\u0026previous-version=2.8.2\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/ansible/team-devtools/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/ansible/team-devtools/pull/429","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible%2Fteam-devtools/issues/429","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/429/packages"},{"uuid":"4073199585","node_id":"PR_kwDOLpD82M7KeL-l","number":1,"state":"open","title":"build(deps): bump cairosvg from 2.7.1 to 2.9.0","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-03-13T20:13:36.000Z","updated_at":"2026-03-13T20:14:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.7.1 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/NtskwK/space_docs/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/NtskwK/space_docs/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/NtskwK%2Fspace_docs/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"},{"uuid":"4073192200","node_id":"PR_kwDOLJgrHs7KeKbH","number":327,"state":"closed","title":"chore(deps): bump cairosvg from 2.7.1 to 2.9.0 in /backend/core/api","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-04-04T13:22:33.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-13T20:12:00.000Z","updated_at":"2026-04-04T13:22:43.000Z","time_to_close":1876233,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":"/backend/core/api","ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.7.1 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/glowingkitty/OpenMates/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/glowingkitty/OpenMates/pull/327","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/glowingkitty%2FOpenMates/issues/327","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/327/packages"},{"uuid":"4073175198","node_id":"PR_kwDODj48ns7KeGt-","number":67,"state":"open","title":"Bump cairosvg from 2.8.2 to 2.9.0","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-03-13T20:08:32.000Z","updated_at":"2026-03-13T20:10:25.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cairosvg","old_version":"2.8.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.8.2 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.8.2...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.8.2\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/prcutler/paulcutler.org/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/prcutler/paulcutler.org/pull/67","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/prcutler%2Fpaulcutler.org/issues/67","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/67/packages"},{"uuid":"4073174518","node_id":"PR_kwDOA9yFrs7KeGkb","number":411,"state":"open","title":"chore(deps): bump cairosvg from 2.7.1 to 2.9.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-13T20:08:25.000Z","updated_at":"2026-03-13T20:11:59.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.7.1 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/SCRT-HQ/PSGSuite/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/SCRT-HQ/PSGSuite/pull/411","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SCRT-HQ%2FPSGSuite/issues/411","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/411/packages"},{"uuid":"4073145511","node_id":"PR_kwDOQKwXJM7KeAdN","number":42,"state":"closed","title":"Bump cairosvg from 2.8.2 to 2.9.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-14T00:56:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-13T20:01:52.000Z","updated_at":"2026-03-14T00:56:47.000Z","time_to_close":17692,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cairosvg","old_version":"2.8.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.8.2 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.8.2...2.9.0\"\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=cairosvg\u0026package-manager=uv\u0026previous-version=2.8.2\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/gitinference/jp-tools/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/gitinference/jp-tools/pull/42","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitinference%2Fjp-tools/issues/42","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/42/packages"},{"uuid":"4073138750","node_id":"PR_kwDOASFeDc7Kd_EJ","number":8,"state":"closed","title":"Bump cairosvg from 0.5 to 2.9.0 in /chrome/common/extensions/docs/server2/test_data/github_file_system/test_owner/repo/unzipped_repo","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-11T00:36:06.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-13T20:00:20.000Z","updated_at":"2026-09-11T00:36:08.000Z","time_to_close":15654946,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cairosvg","old_version":"0.5","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":"/chrome/common/extensions/docs/server2/test_data/github_file_system/test_owner/repo/unzipped_repo","ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 0.5 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDon’t draw clipPath when defined after reference\u003c/li\u003e\n\u003cli\u003eHandle evenodd fill rule with gradients and patterns\u003c/li\u003e\n\u003cli\u003eFix ratio and clip for \u0026quot;image\u0026quot; tags with no size\u003c/li\u003e\n\u003cli\u003eHandle data-URLs in safe mode\u003c/li\u003e\n\u003cli\u003eUse f-strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eWhen processing SVG files, CairoSVG could access other files online, possibly leading to very long renderings or other security problems.\u003c/p\u003e\n\u003cp\u003eThis feature is now disabled by default. External resources can still be accessed using the \u0026quot;unsafe\u0026quot; or the \u0026quot;url_fetcher\u0026quot; parameter.\u003c/p\u003e\n\u003ch2\u003e2.6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.5 and 3.6, add support of Python 3.9, 3.10 and 3.11\u003c/li\u003e\n\u003cli\u003eSupport crispEdges value for text antialiasing\u003c/li\u003e\n\u003cli\u003eDon’t crash when including CMYK images\u003c/li\u003e\n\u003cli\u003eOnly update docstrings when not optimized\u003c/li\u003e\n\u003cli\u003eDon’t restore current point after empty paths\u003c/li\u003e\n\u003cli\u003eAssume that 1ch equals 0.5em\u003c/li\u003e\n\u003cli\u003eFix various deprecation warnings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.5.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix marker path scale\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.5.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eWhen processing SVG files, CairoSVG was using two regular expressions which are vulnerable to Regular Expression Denial of Service (REDoS).\u003c/p\u003e\n\u003cp\u003eIf an attacker provided a malicious SVG, it could make CairoSVG get stuck processing the file for a very long time.\u003c/p\u003e\n\u003cp\u003eOther bug fixes:\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.7.1 released on 2023-08-05\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDon’t draw clipPath when defined after reference\u003c/li\u003e\n\u003cli\u003eHandle evenodd fill rule with gradients and patterns\u003c/li\u003e\n\u003cli\u003eFix ratio and clip for \u0026quot;image\u0026quot; tags with no size\u003c/li\u003e\n\u003cli\u003eHandle data-URLs in safe mode\u003c/li\u003e\n\u003cli\u003eUse f-strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 2.7.0 released on 2023-03-20\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/0.5...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=0.5\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/acidburn0zzz/chromium-crosswalk/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/acidburn0zzz/chromium-crosswalk/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/acidburn0zzz%2Fchromium-crosswalk/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"},{"uuid":"4073131207","node_id":"PR_kwDOCKBRic7Kd9jB","number":206,"state":"closed","title":"Bump cairosvg from 2.7.1 to 2.9.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-29T09:57:04.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-13T19:58:35.000Z","updated_at":"2026-03-29T09:57:13.000Z","time_to_close":1346309,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.7.1 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/r2dt-bio/R2DT/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/r2dt-bio/R2DT/pull/206","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/r2dt-bio%2FR2DT/issues/206","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/206/packages"},{"uuid":"3835529990","node_id":"PR_kwDOLufxkc6-T0U9","number":145,"state":"open","title":"deps: bump cairosvg from 2.7.1 to 2.8.2 in the graphics-dependencies group across 1 directory","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-01-20T21:27:15.000Z","updated_at":"2026-01-20T21:29:24.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.8.2","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":"the graphics-dependencies group across 1 directory","ecosystem":"pip"},"body":"Bumps the graphics-dependencies group with 1 update in the / directory: [cairosvg](https://github.com/Kozea/CairoSVG).\n\nUpdates `cairosvg` from 2.7.1 to 2.8.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/abdb8f9bbe42f1cf62b85f6fb5350cb9b485a66c\"\u003e\u003ccode\u003eabdb8f9\u003c/code\u003e\u003c/a\u003e Allow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/37952cde77960d43c0e62ac7632d4929e9199433\"\u003e\u003ccode\u003e37952cd\u003c/code\u003e\u003c/a\u003e Version 2.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/5b1c86010f6a44aa783bdfec4db2955b8877a5ac\"\u003e\u003ccode\u003e5b1c860\u003c/code\u003e\u003c/a\u003e Update setup.cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/500391d99c344c3a3fc802fd16240926b5a38cc4\"\u003e\u003ccode\u003e500391d\u003c/code\u003e\u003c/a\u003e Update supported Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/abafa8ae248dc9cef0349adaa2f61849ea56920c\"\u003e\u003ccode\u003eabafa8a\u003c/code\u003e\u003c/a\u003e Don’t crash when more than 2 values are given to translate and scale\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.8.2\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.8.2)](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 merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/OpenMS/pyopenms_viz/pull/145","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMS%2Fpyopenms_viz/issues/145","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/145/packages"}],"issue_packages":[{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":"/MINERVA_PID","pr_created_at":"2026-09-14T15:45:52.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"5451492361","node_id":"PR_kwDOPtqAsM8AAAABDeaJCA","number":1205,"state":"closed","title":"deps(deps): bump cairosvg from 2.9.0 to 2.9.1 in /MINERVA_PID","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-14T15:47:16.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-14T15:45:52.000Z","updated_at":"2026-09-14T15:52:19.000Z","time_to_close":84,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps)","packages":[{"name":"cairosvg","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":"/MINERVA_PID","ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.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=cairosvg\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/GBOGEB/ABACUS/pull/1205","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GBOGEB%2FABACUS/issues/1205","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1205/packages"}},{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":null,"pr_created_at":"2026-09-13T18:23:14.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"5441905831","node_id":"PR_kwDONZ-FPM8AAAABDWxuNA","number":39,"state":"closed","title":"build(deps): bump the python group across 5 directories with 21 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-09-13T18:58:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-13T18:23:14.000Z","updated_at":"2026-09-13T18:58:31.000Z","time_to_close":2108,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":21,"packages":[{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"asyncio","old_version":"3.4.3","new_version":"4.0.0","repository_url":"https://github.com/python/asyncio"},{"name":"basemap","old_version":"1.3.8","new_version":"1.3.9","repository_url":"https://github.com/matplotlib/basemap"},{"name":"basemap-data","old_version":"1.3.2","new_version":"2.0.0","repository_url":"https://github.com/matplotlib/basemap"},{"name":"cairosvg","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"},{"name":"cartopy","old_version":"0.22.0","new_version":"0.25.0","repository_url":"https://github.com/SciTools/cartopy"},{"name":"imageio","old_version":"2.34.1","new_version":"2.37.4","repository_url":"https://github.com/imageio/imageio"},{"name":"matplotlib","old_version":"3.7.2","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"xarray","old_version":"2023.1.0","new_version":"2026.7.0","repository_url":"https://github.com/pydata/xarray"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [pyyaml](https://github.com/yaml/pyyaml), [asyncio](https://github.com/python/asyncio), [basemap](https://github.com/matplotlib/basemap), [basemap-data](https://github.com/matplotlib/basemap), [cairosvg](https://github.com/Kozea/CairoSVG), [cartopy](https://github.com/SciTools/cartopy), [imageio](https://github.com/imageio/imageio), [matplotlib](https://github.com/matplotlib/matplotlib), [xarray](https://github.com/pydata/xarray), [netcdf4](https://github.com/Unidata/netcdf4-python), [h5py](https://github.com/h5py/h5py), [numpy](https://github.com/numpy/numpy), [pandas](https://github.com/pandas-dev/pandas), [scipy](https://github.com/scipy/scipy), [cdsapi](https://github.com/ecmwf/cdsapi), [pika](https://github.com/pika/pika), [python-dotenv](https://github.com/theskumar/python-dotenv), [minio](https://github.com/minio/minio-py), [aio-pika](https://github.com/mosquito/aio-pika), [psycopg2-binary](https://github.com/psycopg/psycopg2) and [apscheduler](https://github.com/agronholm/apscheduler) to permit the latest version.\nUpdates `pyyaml` from 6.0.1 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Cython 3.x and Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for extension build with Cython 3.x\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13\u003c/li\u003e\n\u003cli\u003eAdded PyPI wheels for musllinux on aarch64\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.0.2 (2024-08-06)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/808\"\u003eyaml/pyyaml#808\u003c/a\u003e -- Support for Cython 3.x and Python 3.13\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/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/41309b0bcb4559edb1d691d47199035ef539d785\"\u003e\u003ccode\u003e41309b0\u003c/code\u003e\u003c/a\u003e Release 6.0.2 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/819\"\u003e#819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/dd9f0e1236775dcce682c91823e009556ce2a271\"\u003e\u003ccode\u003edd9f0e1\u003c/code\u003e\u003c/a\u003e 6.0.2rc1 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/f5527a26d518b3e9c66f9211e0af00c83f09a97e\"\u003e\u003ccode\u003ef5527a2\u003c/code\u003e\u003c/a\u003e disable CI trigger on PR edits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/b4d80a742142004490d2da7691d534923820b81c\"\u003e\u003ccode\u003eb4d80a7\u003c/code\u003e\u003c/a\u003e Python 3.12 + musllinux_1_1_x86_64 wheel support\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.1 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Cython 3.x and Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for extension build with Cython 3.x\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13\u003c/li\u003e\n\u003cli\u003eAdded PyPI wheels for musllinux on aarch64\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.0.2 (2024-08-06)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/808\"\u003eyaml/pyyaml#808\u003c/a\u003e -- Support for Cython 3.x and Python 3.13\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/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/41309b0bcb4559edb1d691d47199035ef539d785\"\u003e\u003ccode\u003e41309b0\u003c/code\u003e\u003c/a\u003e Release 6.0.2 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/819\"\u003e#819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/dd9f0e1236775dcce682c91823e009556ce2a271\"\u003e\u003ccode\u003edd9f0e1\u003c/code\u003e\u003c/a\u003e 6.0.2rc1 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/f5527a26d518b3e9c66f9211e0af00c83f09a97e\"\u003e\u003ccode\u003ef5527a2\u003c/code\u003e\u003c/a\u003e disable CI trigger on PR edits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/b4d80a742142004490d2da7691d534923820b81c\"\u003e\u003ccode\u003eb4d80a7\u003c/code\u003e\u003c/a\u003e Python 3.12 + musllinux_1_1_x86_64 wheel support\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.1 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Cython 3.x and Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for extension build with Cython 3.x\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13\u003c/li\u003e\n\u003cli\u003eAdded PyPI wheels for musllinux on aarch64\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.0.2 (2024-08-06)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/808\"\u003eyaml/pyyaml#808\u003c/a\u003e -- Support for Cython 3.x and Python 3.13\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/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/41309b0bcb4559edb1d691d47199035ef539d785\"\u003e\u003ccode\u003e41309b0\u003c/code\u003e\u003c/a\u003e Release 6.0.2 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/819\"\u003e#819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/dd9f0e1236775dcce682c91823e009556ce2a271\"\u003e\u003ccode\u003edd9f0e1\u003c/code\u003e\u003c/a\u003e 6.0.2rc1 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/f5527a26d518b3e9c66f9211e0af00c83f09a97e\"\u003e\u003ccode\u003ef5527a2\u003c/code\u003e\u003c/a\u003e disable CI trigger on PR edits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/b4d80a742142004490d2da7691d534923820b81c\"\u003e\u003ccode\u003eb4d80a7\u003c/code\u003e\u003c/a\u003e Python 3.12 + musllinux_1_1_x86_64 wheel support\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.1 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Cython 3.x and Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for extension build with Cython 3.x\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13\u003c/li\u003e\n\u003cli\u003eAdded PyPI wheels for musllinux on aarch64\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.0.2 (2024-08-06)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/808\"\u003eyaml/pyyaml#808\u003c/a\u003e -- Support for Cython 3.x and Python 3.13\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/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/41309b0bcb4559edb1d691d47199035ef539d785\"\u003e\u003ccode\u003e41309b0\u003c/code\u003e\u003c/a\u003e Release 6.0.2 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/819\"\u003e#819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/dd9f0e1236775dcce682c91823e009556ce2a271\"\u003e\u003ccode\u003edd9f0e1\u003c/code\u003e\u003c/a\u003e 6.0.2rc1 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/f5527a26d518b3e9c66f9211e0af00c83f09a97e\"\u003e\u003ccode\u003ef5527a2\u003c/code\u003e\u003c/a\u003e disable CI trigger on PR edits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/b4d80a742142004490d2da7691d534923820b81c\"\u003e\u003ccode\u003eb4d80a7\u003c/code\u003e\u003c/a\u003e Python 3.12 + musllinux_1_1_x86_64 wheel support\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asyncio` from 3.4.3 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/asyncio/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basemap` from 1.3.8 to 1.3.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/basemap/releases\"\u003ebasemap's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.9\u003c/h2\u003e\n\u003cp\u003eThis is a maintenance release that fixes the following issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eGeosLibrary\u003c/code\u003e wrapper to also work with CMake \u0026gt;= 3.27.0 and Python 2.7 on Windows.\u003c/li\u003e\n\u003cli\u003eFix broken \u003ccode\u003eProj.__call__\u003c/code\u003e when the input arguments are provided as a combined single array.\u003c/li\u003e\n\u003cli\u003eFix flipped coastlines with pseudocylindrical projections when \u003ccode\u003elon_0\u003c/code\u003e is greater than 0 deg (thanks to \u003ca href=\"https://github.com/YilongWang\"\u003e\u003ccode\u003e@​YilongWang\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u0026quot;antialiased\u0026quot; argument being ignored in \u003ccode\u003eBasemap.drawcounties\u003c/code\u003e and \u003ccode\u003eBasemap.readshapefile\u003c/code\u003e (thanks to \u003ca href=\"https://github.com/TheFizzWare\"\u003e\u003ccode\u003e@​TheFizzWare\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix missing boundary countries if \u003ccode\u003eBaseGeometry.intersection\u003c/code\u003e returns a \u003ccode\u003eGEOS_GEOMETRYCOLLECTION\u003c/code\u003e (thanks to \u003ca href=\"https://github.com/guidocioni\"\u003e\u003ccode\u003e@​guidocioni\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix warped images shown behind elliptical map backgrounds when the map boundary is not initialised manually (thanks to \u003ca href=\"https://github.com/YilongWang\"\u003e\u003ccode\u003e@​YilongWang\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix references to removed \u003ccode\u003enumpy.float\u003c/code\u003e alias (thanks to \u003ca href=\"https://github.com/quickbrett\"\u003e\u003ccode\u003e@​quickbrett\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix wrong reference to example file in FAQ (thanks to \u003ca href=\"https://github.com/timcoote\"\u003e\u003ccode\u003e@​timcoote\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePlease visit the \u003ca href=\"https://github.com/matplotlib/basemap/tree/v1.3.9/CHANGELOG.md\"\u003e\u003ccode\u003eCHANGELOG\u003c/code\u003e\u003c/a\u003e for a complete list of changes.\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/matplotlib/basemap/blob/develop/CHANGELOG.md\"\u003ebasemap's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.3.9] - 2023-12-26\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eGeosLibrary\u003c/code\u003e wrapper to also work with CMake \u0026gt;= 3.27.0 and\nPython 2.7 on Windows by adding '/MANIFEST:NO' to override the new\ndefault '/MANIFEST:EMBED,ID=2' provided to linker.\u003c/li\u003e\n\u003cli\u003eFix broken \u003ccode\u003eProj.__call__\u003c/code\u003e when the input arguments are provided as\na combined single array.\u003c/li\u003e\n\u003cli\u003eFix flipped coastlines with pseudocylindrical projections when \u003ccode\u003elon_0\u003c/code\u003e\nis greater than 0 deg (solves issues \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/443\"\u003e#443\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/463\"\u003e#463\u003c/a\u003e, thanks to\n\u003ca href=\"https://github.com/YilongWang\"\u003e\u003ccode\u003e@​YilongWang\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eantialiased\u003c/code\u003e argument being ignored in \u003ccode\u003eBasemap.drawcounties\u003c/code\u003e and\n\u003ccode\u003eBasemap.readshapefile\u003c/code\u003e (solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/501\"\u003e#501\u003c/a\u003e, thanks to \u003ca href=\"https://github.com/TheFizzWare\"\u003e\u003ccode\u003e@​TheFizzWare\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eBaseGeometry.intersection\u003c/code\u003e in \u003ccode\u003e_geoslib\u003c/code\u003e so that it also works\nwith \u003ccode\u003eGEOS_GEOMETRYCOLLECTION\u003c/code\u003e objects returned by \u003ccode\u003eGEOSIntersection\u003c/code\u003e\n(solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/566\"\u003e#566\u003c/a\u003e, where country boundaries are missing due to this\nbug, thanks to \u003ca href=\"https://github.com/guidocioni\"\u003e\u003ccode\u003e@​guidocioni\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug with elliptical maps causing warped images (Blue Marble,\nETOPO, Shaded Relief) to be shown behind the map background when the\nmap boundary is not initialised manually (solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/577\"\u003e#577\u003c/a\u003e, thanks\nto \u003ca href=\"https://github.com/YilongWang\"\u003e\u003ccode\u003e@​YilongWang\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix references to removed \u003ccode\u003enumpy.float\u003c/code\u003e alias (solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/589\"\u003e#589\u003c/a\u003e,\nthanks to \u003ca href=\"https://github.com/quickbrett\"\u003e\u003ccode\u003e@​quickbrett\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix wrong reference to \u003ccode\u003eireland.py\u003c/code\u003e example in FAQ, which should be\n\u003ccode\u003ehires.py\u003c/code\u003e instead, and fix wrong use of locals and invalid syntax\nin this example (solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/592\"\u003e#592\u003c/a\u003e, thanks to \u003ca href=\"https://github.com/timcoote\"\u003e\u003ccode\u003e@​timcoote\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/matplotlib/basemap/commit/2eac57f5fa86d1261bf08211a131f8afe02fe630\"\u003e\u003ccode\u003e2eac57f\u003c/code\u003e\u003c/a\u003e Merge branch 'hotfix-1.3.9'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/86a0eb3208225b7435ec7b82cd369160dbe167dd\"\u003e\u003ccode\u003e86a0eb3\u003c/code\u003e\u003c/a\u003e Set release date for 1.3.9 in CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/8f5bca13c000820c8a247cd946b214dfcede8d37\"\u003e\u003ccode\u003e8f5bca1\u003c/code\u003e\u003c/a\u003e Backport fix for country borders disappearing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/cc314d507ee1766e9585edce2399e618a0bd36e8\"\u003e\u003ccode\u003ecc314d5\u003c/code\u003e\u003c/a\u003e Fix GeosLibrary wrapper on Windows and Python 2.7 with CMake 3.27.0+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/86814397818bdc4614e83243a49b4e7ea5bbbdb5\"\u003e\u003ccode\u003e8681439\u003c/code\u003e\u003c/a\u003e Backport fix for broken Proj.\u003cstrong\u003ecall\u003c/strong\u003e with single input array\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/87bebc5d1403a28268d65db707589d51a121f840\"\u003e\u003ccode\u003e87bebc5\u003c/code\u003e\u003c/a\u003e Fix reference to missing example in FAQ\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/7bcca100cb109957b9323680430a750904f42fd1\"\u003e\u003ccode\u003e7bcca10\u003c/code\u003e\u003c/a\u003e Fix some antialiased parameters being ignored\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/f3dc1301b0deafb0a0b2755a1273fb3fd681a975\"\u003e\u003ccode\u003ef3dc130\u003c/code\u003e\u003c/a\u003e Update CHANGELOG with original fixed issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/32eb056cb411c57ca98887cba4254627d4c48eef\"\u003e\u003ccode\u003e32eb056\u003c/code\u003e\u003c/a\u003e Fix flipped coastlines in pseudocylindrical projections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/706f980600fbd3499166a55525928ee578b39177\"\u003e\u003ccode\u003e706f980\u003c/code\u003e\u003c/a\u003e Fix warped images placed behind elliptical map background\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/basemap/compare/v1.3.8...v1.3.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basemap-data` from 1.3.2 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/basemap/releases\"\u003ebasemap-data's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003cp\u003eThis is a major release with significant amount of modifications, including some breaking changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for NumPy 2.0 (thanks to \u003ca href=\"https://github.com/cvanelteren\"\u003e\u003ccode\u003e@​cvanelteren\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13.\u003c/li\u003e\n\u003cli\u003eRemoval of support for end-of-life Python versions (Python \u0026lt; 3.9).\u003c/li\u003e\n\u003cli\u003eNew workflow for automated wheels based on \u003ca href=\"https://cibuildwheel.pypa.io/\"\u003e\u003ccode\u003ecibuildwheel\u003c/code\u003e\u003c/a\u003e with all major platforms (thanks to \u003ca href=\"https://github.com/cvanelteren\"\u003e\u003ccode\u003e@​cvanelteren\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eNew repository structure with more focus on the \u003ca href=\"https://pypi.org/project/basemap\"\u003e\u003ccode\u003ebasemap\u003c/code\u003e\u003c/a\u003e main package versus the auxiliary data packages.\u003c/li\u003e\n\u003cli\u003eMigration to implicit namespace packages (thanks to \u003ca href=\"https://github.com/ksunden\"\u003e\u003ccode\u003e@​ksunden\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePlease visit the \u003ca href=\"https://github.com/matplotlib/basemap/tree/v2.0.0/CHANGELOG.md\"\u003e\u003ccode\u003eCHANGELOG\u003c/code\u003e\u003c/a\u003e for a complete list of changes.\u003c/p\u003e\n\u003ch2\u003ev1.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a hotfix release bringing some corrections:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet recursive exclusion for \u003ccode\u003e.DS_Store\u003c/code\u003e folders in \u003ccode\u003eMANIFEST.in\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix broken implementation and docstring of \u003ccode\u003eBasemap.arcgisimage\u003c/code\u003e method (thanks to \u003ca href=\"https://github.com/nitram96\"\u003e\u003ccode\u003e@​nitram96\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePlease visit the \u003ca href=\"https://github.com/matplotlib/basemap/tree/v2.0.0/CHANGELOG.md\"\u003e\u003ccode\u003eCHANGELOG\u003c/code\u003e\u003c/a\u003e for a complete list of changes.\u003c/p\u003e\n\u003ch2\u003ev1.4.0\u003c/h2\u003e\n\u003cp\u003eThis is a minor release bringing several updates:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12, including removal of \u003ccode\u003edistutils\u003c/code\u003e use within the library and fixes for several deprecation warnings.\u003c/li\u003e\n\u003cli\u003eAdd renewed documentation, with fixes for the broken links and examples, an improved section on the installation process, and without the deprecation/sunsetting section.\u003c/li\u003e\n\u003cli\u003eUpgrade bundled GEOS to 3.6.5.\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003ebasemap\u003c/code\u003e source code to work with \u003ccode\u003ematplotlib\u003c/code\u003e 3.8.x (thanks to \u003ca href=\"https://github.com/qianwu2\"\u003e\u003ccode\u003e@​qianwu2\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePrecompiled PyPI wheels for MacOS (architectures x64 and arm64, Python 3.9+).\u003c/li\u003e\n\u003cli\u003ePrecompiled \u003ccode\u003econda-forge\u003c/code\u003e packages for MacOS arm64, GNU/Linux aarch64 and GNU/Linux ppc64le.\u003c/li\u003e\n\u003cli\u003eOptional argument \u003ccode\u003eencoding_errors\u003c/code\u003e for \u003ccode\u003eBasemap.readshapefile\u003c/code\u003e method (thanks to \u003ca href=\"https://github.com/guziy\"\u003e\u003ccode\u003e@​guziy\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eOptional argument \u003ccode\u003ecachedir\u003c/code\u003e for \u003ccode\u003eBasemap.arcgisimage\u003c/code\u003e method to allow caching of ArcGIS image downloads (thanks to \u003ca href=\"https://github.com/JoepdeJong\"\u003e\u003ccode\u003e@​JoepdeJong\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMaintenance bugfixes are also included, especially:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e_geoslib.pyx\u003c/code\u003e compilation with Cython 3.0+ \u0026quot;legacy_implicit_noexcept\u0026quot; (thanks to \u003ca href=\"https://github.com/musicinmybrain\"\u003e\u003ccode\u003e@​musicinmybrain\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_geoslib.pyx\u003c/code\u003e compilation with newer compilers Clang 16 and GCC 14 (thanks to \u003ca href=\"https://github.com/fweimer-rh\"\u003e\u003ccode\u003e@​fweimer-rh\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpgrade the version pins for several runtime, lint, doc, setup and test requirements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePlease visit the \u003ca href=\"https://github.com/matplotlib/basemap/tree/v2.0.0/CHANGELOG.md\"\u003e\u003ccode\u003eCHANGELOG\u003c/code\u003e\u003c/a\u003e for a complete list of changes.\u003c/p\u003e\n\u003ch2\u003ev1.3.9\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/matplotlib/basemap/blob/develop/CHANGELOG.md\"\u003ebasemap-data's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.0.0] - 2025-06-13\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.13 support (PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/619\"\u003e#619\u003c/a\u003e, solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/608\"\u003e#608\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eNumPy 2.0 support (PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/614\"\u003e#614\u003c/a\u003e by \u003ca href=\"https://github.com/cvanelteren\"\u003e\u003ccode\u003e@​cvanelteren\u003c/code\u003e\u003c/a\u003e, solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/604\"\u003e#604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAutomated MacOS wheels for x86_64 and arm64 (PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/620\"\u003e#620\u003c/a\u003e by\n\u003ca href=\"https://github.com/cvanelteren\"\u003e\u003ccode\u003e@​cvanelteren\u003c/code\u003e\u003c/a\u003e, solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/608\"\u003e#608\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eSupport in \u003ccode\u003eBasemap.wmsimage\u003c/code\u003e to redirect \u003ccode\u003eWebMapService\u003c/code\u003e constructor\nparameters when available (PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/603\"\u003e#603\u003c/a\u003e by \u003ca href=\"https://github.com/Kurea\"\u003e\u003ccode\u003e@​Kurea\u003c/code\u003e\u003c/a\u003e, solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/602\"\u003e#602\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING CHANGE\u003c/strong\u003e: Set Python minimum supported version to 3.9.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING CHANGE\u003c/strong\u003e: Migrate project structure (solves issue \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/616\"\u003e#616\u003c/a\u003e):\n\u003cul\u003e\n\u003cli\u003eThe repository root is repurposed again for the \u003ccode\u003ebasemap\u003c/code\u003e project.\u003c/li\u003e\n\u003cli\u003eThe auxiliary data packages are moved inside the \u003ccode\u003edata\u003c/code\u003e folder.\u003c/li\u003e\n\u003cli\u003eThe requirements files are moved to its own \u003ccode\u003edep\u003c/code\u003e folder.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eexamples\u003c/code\u003e folder is moved inside the \u003ccode\u003edoc\u003c/code\u003e folder.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING CHANGE\u003c/strong\u003e: Migrate \u003ccode\u003ebasemap\u003c/code\u003e libraries to use implicit\nnamespace packages (PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/576\"\u003e#576\u003c/a\u003e by \u003ca href=\"https://github.com/ksunden\"\u003e\u003ccode\u003e@​ksunden\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMigrate GitHub CI workflows to use \u003ccode\u003ecibuildwheel\u003c/code\u003e (PRs \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/614\"\u003e#614\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/618\"\u003e#618\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/622\"\u003e#622\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/623\"\u003e#623\u003c/a\u003e by \u003ca href=\"https://github.com/cvanelteren\"\u003e\u003ccode\u003e@​cvanelteren\u003c/code\u003e\u003c/a\u003e and PR \u003ca href=\"https://redirect.github.com/matplotlib/basemap/issues/621\"\u003e#621\u003c/a\u003e, solves GitHub\nartifact actions v1 sunset issue).\u003c/li\u003e\n\u003cli\u003eUpdate library dependencies:\n\u003cul\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003ebasemap_data\u003c/code\u003e to 2.0.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003ebasemap_data\u003c/code\u003e to 3.0.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003epackaging\u003c/code\u003e to 20.5.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003epackaging\u003c/code\u003e to 26.0.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003enumpy\u003c/code\u003e to 2.0.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003enumpy\u003c/code\u003e to 2.4.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003ematplotlib\u003c/code\u003e to 3.4.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003ematplotlib\u003c/code\u003e to 3.11.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003epyproj\u003c/code\u003e to 3.0.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003epyproj\u003c/code\u003e to 3.8.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003epyshp\u003c/code\u003e to 2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdate optional library dependencies:\n\u003cul\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003eOWSLib\u003c/code\u003e to 0.35.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdate build dependencies:\n\u003cul\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003esetuptools\u003c/code\u003e to 67.0.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003esetuptools\u003c/code\u003e to 81.0.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003ewheel\u003c/code\u003e to 0.40.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003ewheel\u003c/code\u003e to 0.46.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003ecython\u003c/code\u003e to 3.0.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003ecython\u003c/code\u003e to 3.2.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUpdate doc dependencies:\n\u003cul\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003esphinx\u003c/code\u003e to 8.0.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003efuro\u003c/code\u003e to 2023.9.10.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003efuro\u003c/code\u003e to 2024.8.7.\u003c/li\u003e\n\u003cli\u003eUpgrade lower limit for \u003ccode\u003escipy\u003c/code\u003e to 1.6.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003escipy\u003c/code\u003e to 1.16.\u003c/li\u003e\n\u003cli\u003eUpgrade upper limit for \u003ccode\u003enetCDF4\u003c/code\u003e to 1.8.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/6fed00b9b6146d19ffa98fd00a19cbb0ee448141\"\u003e\u003ccode\u003e6fed00b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-2.0.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/50a3c0e6d39e8a0647d9f6aca68fec47168651dc\"\u003e\u003ccode\u003e50a3c0e\u003c/code\u003e\u003c/a\u003e Reformat CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/68f16cc127a0fccac5be6308fc1774fa417abcaf\"\u003e\u003ccode\u003e68f16cc\u003c/code\u003e\u003c/a\u003e Update license references in README also with SPDX identifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/5586c2df72e78de3dad4e0ff48ce355607307c79\"\u003e\u003ccode\u003e5586c2d\u003c/code\u003e\u003c/a\u003e Add a couple of missing references in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/49538b10f61487325183471448612183f437a00d\"\u003e\u003ccode\u003e49538b1\u003c/code\u003e\u003c/a\u003e Ensure license attributes are valid SPDX identifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/fbd080ff51eefdf973221e1794b7dba1dc44565b\"\u003e\u003ccode\u003efbd080f\u003c/code\u003e\u003c/a\u003e Make the maintainers metadata more general\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/5a180c9d27f9ed0f334ee36e24da83ff957c2baf\"\u003e\u003ccode\u003e5a180c9\u003c/code\u003e\u003c/a\u003e Fix minor typos in README files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/1e9cc09a66af0260d4025415058b1765ec78f698\"\u003e\u003ccode\u003e1e9cc09\u003c/code\u003e\u003c/a\u003e Prepare CHANGELOG for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/963df4d010763ea02c19c98457bb86e90ad6ef60\"\u003e\u003ccode\u003e963df4d\u003c/code\u003e\u003c/a\u003e Set basemap version to 2.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/basemap/commit/f4688ecc4714b139c57bb46c83efef5ddd5b8eb3\"\u003e\u003ccode\u003ef4688ec\u003c/code\u003e\u003c/a\u003e Merge branch 'issue-project-structure' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/basemap/compare/v1.3.2...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cairosvg` 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cartopy` from 0.22.0 to 0.25.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SciTools/cartopy/releases\"\u003ecartopy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump pypa/cibuildwheel from 2.21.2 to 2.21.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2451\"\u003eSciTools/cartopy#2451\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2449\"\u003eSciTools/cartopy#2449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: Deprecate unused clip_path module by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2452\"\u003eSciTools/cartopy#2452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: use Matplotlib roles Sphinx extension by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2456\"\u003eSciTools/cartopy#2456\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: Switch to (lon, lat) for all argument and return ordering by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2453\"\u003eSciTools/cartopy#2453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIntroduce \u003ccode\u003epath_to_shapely\u003c/code\u003e and \u003ccode\u003eshapely_to_path\u003c/code\u003e by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2455\"\u003eSciTools/cartopy#2455\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCenter the cartopy text in the logo by \u003ca href=\"https://github.com/philippemiron\"\u003e\u003ccode\u003e@​philippemiron\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2460\"\u003eSciTools/cartopy#2460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.10.3 to 1.11.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2467\"\u003eSciTools/cartopy#2467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: Add half-pixel shift to img_transform y coordinate by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2461\"\u003eSciTools/cartopy#2461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: add deprecation note for \u003ccode\u003eclip_path\u003c/code\u003e module by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2471\"\u003eSciTools/cartopy#2471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2474\"\u003eSciTools/cartopy#2474\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump pypa/gh-action-pypi-publish from 1.12.1 to 1.12.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2475\"\u003eSciTools/cartopy#2475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMNT: Replace deprecated utcnow() call by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2478\"\u003eSciTools/cartopy#2478\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: create a single inverted polygon when no exteriors found by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2470\"\u003eSciTools/cartopy#2470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.21.3 to 2.22.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2484\"\u003eSciTools/cartopy#2484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCapitalise and protect \u0026quot;Python\u0026quot; and \u0026quot;Matplotlib\u0026quot; in suggested BibTeX citation by \u003ca href=\"https://github.com/warrickball\"\u003e\u003ccode\u003e@​warrickball\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2485\"\u003eSciTools/cartopy#2485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: Gridliner should handle offset central longitudes by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2489\"\u003eSciTools/cartopy#2489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2490\"\u003eSciTools/cartopy#2490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement local caching for WMTS requests by \u003ca href=\"https://github.com/dnowacki-usgs\"\u003e\u003ccode\u003e@​dnowacki-usgs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2316\"\u003eSciTools/cartopy#2316\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2493\"\u003eSciTools/cartopy#2493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/gh-action-pypi-publish from 1.12.3 to 1.12.4 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/SciTools/cartopy/pull/2494\"\u003eSciTools/cartopy#2494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Gridliner Label Test and Docs Example by \u003ca href=\"https://github.com/jmeischner\"\u003e\u003ccode\u003e@​jmeischner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2505\"\u003eSciTools/cartopy#2505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.22.0 to 2.23.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2506\"\u003eSciTools/cartopy#2506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace sqrt(x\u003cstrong\u003e2 + y\u003c/strong\u003e2) with hypot(x, y) by \u003ca href=\"https://github.com/eumiro\"\u003e\u003ccode\u003e@​eumiro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2509\"\u003eSciTools/cartopy#2509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse pathlib.Path's read and write methods by \u003ca href=\"https://github.com/eumiro\"\u003e\u003ccode\u003e@​eumiro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2508\"\u003eSciTools/cartopy#2508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.23.0 to 2.23.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2511\"\u003eSciTools/cartopy#2511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.23.1 to 2.23.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2513\"\u003eSciTools/cartopy#2513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2516\"\u003eSciTools/cartopy#2516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTST: Bump tolerance for one image in future version testing by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2518\"\u003eSciTools/cartopy#2518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix handling of PosixPath in cartopy.io fh_getter function by \u003ca href=\"https://github.com/jolivetr\"\u003e\u003ccode\u003e@​jolivetr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2500\"\u003eSciTools/cartopy#2500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: Add a raster reprojection example by \u003ca href=\"https://github.com/edsaac\"\u003e\u003ccode\u003e@​edsaac\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2496\"\u003eSciTools/cartopy#2496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTST: xfail France test due to data server issues by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2522\"\u003eSciTools/cartopy#2522\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: make hole multipolygon valid before removing from projected polygon by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2521\"\u003eSciTools/cartopy#2521\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected French WFS server address by \u003ca href=\"https://github.com/mcuntz\"\u003e\u003ccode\u003e@​mcuntz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2524\"\u003eSciTools/cartopy#2524\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Remove concurrency cancellation from release build by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2523\"\u003eSciTools/cartopy#2523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epep639: setuptools license and license-files fields by \u003ca href=\"https://github.com/bjlittle\"\u003e\u003ccode\u003e@​bjlittle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2526\"\u003eSciTools/cartopy#2526\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace deprecated numpy.math with libc.math by \u003ca href=\"https://github.com/kafitzgerald\"\u003e\u003ccode\u003e@​kafitzgerald\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2528\"\u003eSciTools/cartopy#2528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpilhaus projection  by \u003ca href=\"https://github.com/MaceKuailv\"\u003e\u003ccode\u003e@​MaceKuailv\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2529\"\u003eSciTools/cartopy#2529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDOC: add example aligning Cartopy and Matplotlib axes by \u003ca href=\"https://github.com/rcomer\"\u003e\u003ccode\u003e@​rcomer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2502\"\u003eSciTools/cartopy#2502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eENH: Azimuthal rotation for Orthographic projection by \u003ca href=\"https://github.com/kenhira\"\u003e\u003ccode\u003e@​kenhira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2504\"\u003eSciTools/cartopy#2504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.23.2 to 2.23.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2525\"\u003eSciTools/cartopy#2525\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTST/FIX: xfail test-wfs-france due to unauthorized server by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2537\"\u003eSciTools/cartopy#2537\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFIX: Skip optional shapefile extensions by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2534\"\u003eSciTools/cartopy#2534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTST/FIX: Spilhaus doesn't contain units or datum by default, so remove by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2535\"\u003eSciTools/cartopy#2535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eENH: Use shapefile crs attribute when possible by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2307\"\u003eSciTools/cartopy#2307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCI: Add a conda ci job by \u003ca href=\"https://github.com/greglucas\"\u003e\u003ccode\u003e@​greglucas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2538\"\u003eSciTools/cartopy#2538\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild(deps): Bump pypa/cibuildwheel from 2.23.3 to 3.0.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2544\"\u003eSciTools/cartopy#2544\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/SciTools/cartopy/pull/2546\"\u003eSciTools/cartopy#2546\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/SciTools/cartopy/commit/2264d277a5b2900b010244d11f80bb523df349dd\"\u003e\u003ccode\u003e2264d27\u003c/code\u003e\u003c/a\u003e CI: Update release runner version (\u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2555\"\u003e#2555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/396043e1ff09061a946b6b62c4af482f5ab9f8bb\"\u003e\u003ccode\u003e396043e\u003c/code\u003e\u003c/a\u003e allow RGBA mapbox styles (\u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2553\"\u003e#2553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/98c1106e53b6de3729113cdbf2f6ef22de062d8e\"\u003e\u003ccode\u003e98c1106\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2552\"\u003e#2552\u003c/a\u003e from greglucas/doc-v0.25-date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/85dbced0ca73d0edce8c962500a583a7f3fd2c1c\"\u003e\u003ccode\u003e85dbced\u003c/code\u003e\u003c/a\u003e DOC: Add v0.25 release date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/3e0bbe0e4b33efe7fdf133a8cdd7f8beb39ba69d\"\u003e\u003ccode\u003e3e0bbe0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2539\"\u003e#2539\u003c/a\u003e from greglucas/doc-v0.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/aded7af9937d4473a0bec690301eaf137e478945\"\u003e\u003ccode\u003eaded7af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2551\"\u003e#2551\u003c/a\u003e from SciTools/dependabot/github_actions/pypa/cibuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/3cba7091a45d889e11460a2609743a913e917ebe\"\u003e\u003ccode\u003e3cba709\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pypa/cibuildwheel from 3.0.1 to 3.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/84019985f666a6882b1b8d696d25b34343015005\"\u003e\u003ccode\u003e8401998\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2547\"\u003e#2547\u003c/a\u003e from SciTools/dependabot/github_actions/pypa/cibuild...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/c43ad1931ea88067bb3f3b7942370a8efa9d3f74\"\u003e\u003ccode\u003ec43ad19\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pypa/cibuildwheel from 3.0.0 to 3.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SciTools/cartopy/commit/7c1d8653634708c5a580999229d72f9478ab5a1d\"\u003e\u003ccode\u003e7c1d865\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SciTools/cartopy/issues/2546\"\u003e#2546\u003c/a\u003e from SciTools/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SciTools/cartopy/compare/v0.22.0...v0.25.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imageio` from 2.34.1 to 2.37.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/imageio/imageio/releases\"\u003eimageio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.37.4 (2026-07-20)\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eThis release is published under the BSD-2-Clause License.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003eBug\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet filename parameter of FileNotFoundError exception (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/922\"\u003e#922\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/28c2401839738d39e28e3d7e5b584c6fbe143a2a\"\u003e\u003ccode\u003e28c2401\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDoc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix typos in docstrings and comments (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1193\"\u003e#1193\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/eae520f8a7469dd681fbee77eeee3d3139d1721b\"\u003e\u003ccode\u003eeae520f\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaint\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBump aiohttp from 3.13.3 to 3.13.4 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1178\"\u003e#1178\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/7853240312fdfa992aa8f9ec6814e282f27460c9\"\u003e\u003ccode\u003e7853240\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump aiohttp from 3.13.4 to 3.14.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1191\"\u003e#1191\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/30c35592dc8836a44e9733a214838fa1530adb07\"\u003e\u003ccode\u003e30c3559\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump black from 26.3.0 to 26.3.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1173\"\u003e#1173\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/a1b083f20d3ed293e9b8609e7ee9b7bd5b09150e\"\u003e\u003ccode\u003ea1b083f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump gdal from 3.12.2 to 3.13.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1192\"\u003e#1192\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/45fb6942de4035fc379068e1785915267c2e746c\"\u003e\u003ccode\u003e45fb694\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump idna from 3.11 to 3.15 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1189\"\u003e#1189\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/35eefdfb2a1b78bab887d9e7b34f26d1173e78a2\"\u003e\u003ccode\u003e35eefdf\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump pygments from 2.19.2 to 2.20.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1177\"\u003e#1177\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/ff0c95bf07a9c50c14bf7ac62a95b465ff7b2ab8\"\u003e\u003ccode\u003eff0c95b\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump requests from 2.32.5 to 2.33.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1176\"\u003e#1176\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/8f78220f0e97ddcffbb9c6b0d2ba9612503b81d2\"\u003e\u003ccode\u003e8f78220\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump soupsieve from 2.8.3 to 2.8.4 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1195\"\u003e#1195\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/e032eea65b93801aca1cacad668fcc0f6ffaa93d\"\u003e\u003ccode\u003ee032eea\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump urllib3 from 2.6.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1184\"\u003e#1184\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/5aef4946ed991ee6f293c74391a582dadfd78640\"\u003e\u003ccode\u003e5aef494\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSet readme content-type in project metadata (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1165\"\u003e#1165\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/9929abb19399080f0fe766f705823fe8d79dd980\"\u003e\u003ccode\u003e9929abb\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTest\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CI to support new dependency versions (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1196\"\u003e#1196\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/dfdc909c225662784c7c9469232bbe46ea983501\"\u003e\u003ccode\u003edfdc909\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/imageio/imageio/compare/v2.37.3...v2.37.4\"\u003ev2.37.3...v2.37.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.37.3 (2026-03-09)\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eThis release is published under the BSD-2-Clause License.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003eBug\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependencies (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1172\"\u003e#1172\u003c/a\u003e, \u003ca href=\"https://github.com/imageio/imageio/commit/971b83e048b90ffcd2fa5107bdbf270e9879afaf\"\u003e\u003ccode\u003e971b83e\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/imageio/imageio/blob/master/CHANGELOG.md\"\u003eimageio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.37.4 (2026-07-20)\u003c/h2\u003e\n\u003ch3\u003eBug\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet filename parameter of FileNotFoundError exception\n(\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/922\"\u003e#922\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/28c2401839738d39e28e3d7e5b584c6fbe143a2a\"\u003e\u003ccode\u003e28c2401\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDoc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix typos in docstrings and comments (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1193\"\u003e#1193\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/eae520f8a7469dd681fbee77eeee3d3139d1721b\"\u003e\u003ccode\u003eeae520f\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaint\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBump aiohttp from 3.13.3 to 3.13.4 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1178\"\u003e#1178\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/7853240312fdfa992aa8f9ec6814e282f27460c9\"\u003e\u003ccode\u003e7853240\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump aiohttp from 3.13.4 to 3.14.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1191\"\u003e#1191\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/30c35592dc8836a44e9733a214838fa1530adb07\"\u003e\u003ccode\u003e30c3559\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump black from 26.3.0 to 26.3.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1173\"\u003e#1173\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/a1b083f20d3ed293e9b8609e7ee9b7bd5b09150e\"\u003e\u003ccode\u003ea1b083f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump gdal from 3.12.2 to 3.13.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1192\"\u003e#1192\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/45fb6942de4035fc379068e1785915267c2e746c\"\u003e\u003ccode\u003e45fb694\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump idna from 3.11 to 3.15 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1189\"\u003e#1189\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/35eefdfb2a1b78bab887d9e7b34f26d1173e78a2\"\u003e\u003ccode\u003e35eefdf\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump pygments from 2.19.2 to 2.20.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1177\"\u003e#1177\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/ff0c95bf07a9c50c14bf7ac62a95b465ff7b2ab8\"\u003e\u003ccode\u003eff0c95b\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump requests from 2.32.5 to 2.33.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1176\"\u003e#1176\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/8f78220f0e97ddcffbb9c6b0d2ba9612503b81d2\"\u003e\u003ccode\u003e8f78220\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump soupsieve from 2.8.3 to 2.8.4 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1195\"\u003e#1195\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/e032eea65b93801aca1cacad668fcc0f6ffaa93d\"\u003e\u003ccode\u003ee032eea\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBump urllib3 from 2.6.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1184\"\u003e#1184\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/5aef4946ed991ee6f293c74391a582dadfd78640\"\u003e\u003ccode\u003e5aef494\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSet readme content-type in project metadata\n(\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1165\"\u003e#1165\u003c/a\u003e,\n\u003ca href=\"https://github.com/imageio/imageio/commit/9929abb19399080f0fe766f705823fe8d79dd980\"\u003e\u003ccode\u003e9929abb\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTest\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CI to support new dependency versions\n(\u003ca href=\"https://redirect.github.com/imageio/imageio/pull/1196\"\u003e#1196\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/imageio/imageio/commit/671d96a5dd9bc94050cc89c4b436e2f7c874283e\"\u003e\u003ccode\u003e671d96a\u003c/code\u003e\u003c/a\u003e REL: Release imageio v2.37.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/28c2401839738d39e28e3d7e5b584c6fbe143a2a\"\u003e\u003ccode\u003e28c2401\u003c/code\u003e\u003c/a\u003e BUG: set filename parameter of FileNotFoundError exception (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/922\"\u003e#922\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/eae520f8a7469dd681fbee77eeee3d3139d1721b\"\u003e\u003ccode\u003eeae520f\u003c/code\u003e\u003c/a\u003e DOC: Fix typos in docstrings and comments (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1193\"\u003e#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/5aef4946ed991ee6f293c74391a582dadfd78640\"\u003e\u003ccode\u003e5aef494\u003c/code\u003e\u003c/a\u003e MAINT: Bump urllib3 from 2.6.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1184\"\u003e#1184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/35eefdfb2a1b78bab887d9e7b34f26d1173e78a2\"\u003e\u003ccode\u003e35eefdf\u003c/code\u003e\u003c/a\u003e MAINT: Bump idna from 3.11 to 3.15 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1189\"\u003e#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/30c35592dc8836a44e9733a214838fa1530adb07\"\u003e\u003ccode\u003e30c3559\u003c/code\u003e\u003c/a\u003e MAINT: Bump aiohttp from 3.13.4 to 3.14.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1191\"\u003e#1191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/45fb6942de4035fc379068e1785915267c2e746c\"\u003e\u003ccode\u003e45fb694\u003c/code\u003e\u003c/a\u003e MAINT: Bump gdal from 3.12.2 to 3.13.1 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1192\"\u003e#1192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/e032eea65b93801aca1cacad668fcc0f6ffaa93d\"\u003e\u003ccode\u003ee032eea\u003c/code\u003e\u003c/a\u003e MAINT: Bump soupsieve from 2.8.3 to 2.8.4 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1195\"\u003e#1195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/dfdc909c225662784c7c9469232bbe46ea983501\"\u003e\u003ccode\u003edfdc909\u003c/code\u003e\u003c/a\u003e TEST: Update CI to support new dependency versions (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1196\"\u003e#1196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imageio/imageio/commit/c7f8249472f63d6b3c0b8cc9fae823714931c36e\"\u003e\u003ccode\u003ec7f8249\u003c/code\u003e\u003c/a\u003e [MAINT] Bump pytest from 9.0.2 to 9.0.3 (\u003ca href=\"https://redirect.github.com/imageio/imageio/issues/1183\"\u003e#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/imageio/imageio/compare/v2.34.1...v2.37.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.7.2 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.11.1\u003c/h2\u003e\n\u003cp\u003eThis is the first bugfix release of the 3.11.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix tight layout of multiple subplots with \u003ccode\u003esharey=True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eNoNorm\u003c/code\u003e cursor formatting for \u003ccode\u003euint8\u003c/code\u003e images\u003c/li\u003e\n\u003cli\u003eFix occasional misalignment in reported mouse position (also fix a bug with canvas height)\u003c/li\u003e\n\u003cli\u003eFix clipped Axis labels on 3D plots with tight layout\u003c/li\u003e\n\u003cli\u003eFix inverted Axis on 3D plots\u003c/li\u003e\n\u003cli\u003eFix restoring 'auto' aspect in 3D axes after switching from 'equal'\u003c/li\u003e\n\u003cli\u003eFix missing glyphs when subsetting Type 1 fonts in PDF\u003c/li\u003e\n\u003cli\u003eFix oversized embedding of Type 42 fonts in PDF/PostScript files\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAs well as several documentation and typing improvements and corrections.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0\u003c/h2\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. \u003ca href=\"https://matplotlib.org/3.11.0/release/prev_whats_new/whats_new_3.11.0.html\"\u003eSee the release notes for more information\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc2\u003c/h2\u003e\n\u003cp\u003eThis is the second release candidate for the meso release 3.11.0.\u003c/p\u003e\n\u003cp\u003eThis release candidate fixes some problems with downstream packages, removes some missed deprecations, and corrects some additional minor bugs.\u003c/p\u003e\n\u003ch2\u003eREL: v3.11.0rc1\u003c/h2\u003e\n\u003cp\u003eAfter an extended development stretch, we are pleased to announce the first release candidate of Matplotlib 3.11.0.\u003c/p\u003e\n\u003cp\u003eThe largest change within this release is a complete overhaul of text and font processing. Through the use of \u003ca href=\"https://github.com/HOST-Oman/libraqm/\"\u003elibraqm\u003c/a\u003e, \u003ca href=\"https://harfbuzz.github.io/\"\u003eHarfBuzz\u003c/a\u003e, \u003ca href=\"https://github.com/Tehreer/SheenBidi\"\u003eSheenBidi\u003c/a\u003e, and an updated release of \u003ca href=\"https://freetype.org/\"\u003eFreeType\u003c/a\u003e, all text should now support modern font features, enabling full internationalization in all languages. Not all features of these libraries are supported yet, but we expect this work to enable further improvements in an easier manner. Due to the update to the font rendering stack, we cannot guarantee that text will be bit-for-bit perfect with previous releases, so if you are using Matplotlib for testing, it may be necessary to introduce/raise a tolerance within your tests.\u003c/p\u003e\n\u003cp\u003eOutside of text handling, there are several improvements to 3D Axes, performance, new accessible colour sequences, flexible figure management, and more. Final release notes are still being curated, but you may browse \u003ca href=\"https://matplotlib.org/3.11.0/release/next_whats_new\"\u003ethe list of new features\u003c/a\u003e, \u003ca href=\"https://matplotlib.org/3.11.0/api/next_api_changes.html\"\u003eAPI changes\u003c/a\u003e, and \u003ca href=\"https://github.com/matplotlib/matplotlib/milestone/96?closed=1https://github.com/matplotlib/matplotlib/milestone/96?closed=1\"\u003eall issues/pull requests on the milestone\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAs a note for downstream packagers, the font libraries have only been tested against the versions bundled with the wheels. It may be possible to expand the range of requirements, or that a requirement is too broad. Please report any issues you have building against external dependencies.\u003c/p\u003e\n\u003ch2\u003ev3.10.9\u003c/h2\u003e\n\u003cp\u003eThis is a micro release of the v3.10.x series.\nHighlights of this release include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious minor bug and doc fixes\u003c/li\u003e\n\u003cli\u003eSecurity hardening validation of cyclers - Removing eval usage\u003c/li\u003e\n\u003cli\u003eSecurity hardening in Latex and PS calls - Removing shell escapes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eREL: v3.10.8\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe primary highlights of this release are:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eProperly allow freethreaded mode in the MacOS backend\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/matplotlib/matplotlib/commit/3c1757a567c58e41e565313af2d3bcdc52076b43\"\u003e\u003ccode\u003e3c1757a\u003c/code\u003e\u003c/a\u003e REL: v3.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/792c6b5fa9cd2567a80fa231af19b7770b8288e4\"\u003e\u003ccode\u003e792c6b5\u003c/code\u003e\u003c/a\u003e DOC: Prepare for 3.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/aaff9f613a0886fdec0b4e20d9c5f1db15166d2c\"\u003e\u003ccode\u003eaaff9f6\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.11.0-doc' into v3.11.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d4f4527cce030c81eb699516bdd8c1cbab3a940d\"\u003e\u003ccode\u003ed4f4527\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32052\"\u003e#32052\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32038-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/6ad4bcf48beaf05b8632e082dd35a1c8960324c8\"\u003e\u003ccode\u003e6ad4bcf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32050\"\u003e#32050\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31304-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/7fb74d3476247ee7aa078ff45ec60f25f1a9b535\"\u003e\u003ccode\u003e7fb74d3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32051\"\u003e#32051\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32037-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/c624aec7de6060e16d708fd70bd2e9302e95d3f3\"\u003e\u003ccode\u003ec624aec\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32038\"\u003e#32038\u003c/a\u003e: Fix occasional misalignment in reported mouse position (a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/8eda2b79d27a4255380b97b49dcb61110690c0c1\"\u003e\u003ccode\u003e8eda2b7\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32037\"\u003e#32037\u003c/a\u003e: Bump the actions group with 3 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a0e7ae5521b59c25ced9c69e8d9aebc1b0bc7c6e\"\u003e\u003ccode\u003ea0e7ae5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31304\"\u003e#31304\u003c/a\u003e: Fix restoring 'auto' aspect in 3D axes after switching fr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/90013231a38de53af9414747a03ce010de2fe3d0\"\u003e\u003ccode\u003e9001323\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32047\"\u003e#32047\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32025-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.7.2...v3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `xarray` from 2023.1.0 to 2026.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydata/xarray/releases\"\u003exarray's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2026.07.0\u003c/h2\u003e\n\u003cp\u003eThis release adds support for Dask's query-optimizing expression arrays, along\nwith new \u003ccode\u003eday_of_week\u003c/code\u003e and \u003ccode\u003eday_of_year\u003c/code\u003e datetime accessor attributes. It\nalso includes a number of bug fixes, notably for a performance regression in\n:py:meth:\u003ccode\u003eCoordinates.to_index\u003c/code\u003e, Zarr \u003ccode\u003efill_value\u003c/code\u003e round-tripping, and\nexcessive memory use in \u003ccode\u003edrop_encoding\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to the 25 contributors to this release:\nDavis Bennett, Deepak Cherian, Ian Hunt-Isaak, Illviljan, Jonathan Dung, Julia\nSignell, Justus Magin, Kai Mühlbauer, MJSHANG, Mark Harfouche, Mathias Hauser,\nMatt Van Horn, Matthew Rocklin, Max Jones, Maximilian Roos, Nick Hodgskin,\nS Anand, Spencer Clark, Sreekant Baheti, Timothy Hodson, Tom Nicholas,\nVincent Gao, Wali Reheman, Wei Ji and eeshsaxena\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEmpty section at top of whats-new by \u003ca href=\"https://github.com/jsignell\"\u003e\u003ccode\u003e@​jsignell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydata/xarray/pull/11299\"\u003epydata/xarray#11299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix performance regression in Coordinates.to_index by \u003ca href=\"https://github.com/thodson-usgs\"\u003e\u003ccode\u003e@​thodson-usgs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydata/xarray/pull/11306\"\u003epydata/xarray#11306\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument Dataset.load_async and DataArray.load_async by \u003ca href=\"https://github.com/TomNicholas\"\u003e\u003ccode\u003e@​TomNicholas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redi...\n\n_Description has been truncated_","html_url":"https://github.com/Victor-Hndz/AtmosBlock-WebPortal/pull/39","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Victor-Hndz%2FAtmosBlock-WebPortal/issues/39","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/39/packages"}},{"old_version":"\u003e=2.9.0","new_version":"\u003e=2.9.1","update_type":"patch","path":null,"pr_created_at":"2026-09-13T10:22:56.000Z","version_change":"\u003e=2.9.0 → \u003e=2.9.1","issue":{"uuid":"5439488326","node_id":"PR_kwDOQghUCs8AAAABDU7mFA","number":21,"state":"open","title":"docs: update cairosvg requirement from \u003e=2.9.0 to \u003e=2.9.1","user":"dependabot[bot]","labels":["docs","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-13T10:22:56.000Z","updated_at":"2026-09-13T10:24:09.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"docs: update","packages":[{"name":"cairosvg","old_version":"\u003e=2.9.0","new_version":"\u003e=2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [cairosvg](https://github.com/Kozea/CairoSVG) 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.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","html_url":"https://github.com/ibtisam-iq/debugbox/pull/21","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibtisam-iq%2Fdebugbox/issues/21","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21/packages"}},{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":null,"pr_created_at":"2026-09-12T22:33:37.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"5436463045","node_id":"PR_kwDOIi4x8s8AAAABDSmVLw","number":148,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-13T13:32:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-12T22:33:37.000Z","updated_at":"2026-09-13T13:32:48.000Z","time_to_close":53949,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":7,"packages":[{"name":"django","old_version":"6.1","new_version":"6.1.1","repository_url":"https://github.com/django/django"},{"name":"gunicorn","old_version":"26.1.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"cairosvg","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"},{"name":"pypdf","old_version":"6.16.1","new_version":"6.18.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"django-debug-toolbar","old_version":"7.1.1","new_version":"8.0.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-unfold","old_version":"0.104.1","new_version":"0.105.0","repository_url":"https://github.com/unfoldadmin/django-unfold"},{"name":"ruff","old_version":"0.16.3","new_version":"0.16.6","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.1` | `6.1.1` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.1.0` | `26.2.0` |\n| [cairosvg](https://github.com/Kozea/CairoSVG) | `2.9.0` | `2.9.1` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.16.1` | `6.18.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.1.1` | `8.0.0` |\n| [django-unfold](https://github.com/unfoldadmin/django-unfold) | `0.104.1` | `0.105.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.3` | `0.16.6` |\n\n\nUpdates `django` from 6.1 to 6.1.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/249b13d6e93ee3164dee8ed1775395622a50c337\"\u003e\u003ccode\u003e249b13d\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5f26fa88415db2268dcc3d865c5c1062c0a1d751\"\u003e\u003ccode\u003e5f26fa8\u003c/code\u003e\u003c/a\u003e [6.1.x] Added release date for 6.1.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fdcf78a14109a28433cf2b0983a75322baf5d0f7\"\u003e\u003ccode\u003efdcf78a\u003c/code\u003e\u003c/a\u003e [6.1.x] Added remaining community package mentions to the documentation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/72415689785fdf68238a288e71338a2f7b8deb2a\"\u003e\u003ccode\u003e7241568\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37222\"\u003e#37222\u003c/a\u003e -- Fixed QuerySet.distinct() crash on duplicated selecti...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ef3fc8054fea8a728cfb879375a858a6f181b8d9\"\u003e\u003ccode\u003eef3fc80\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37312\"\u003e#37312\u003c/a\u003e, Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36605\"\u003e#36605\u003c/a\u003e -- Fixed annotation preservation and key se...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/b09cb6bb9489dda57969108d058ac40e15d6584e\"\u003e\u003ccode\u003eb09cb6b\u003c/code\u003e\u003c/a\u003e [6.1.x] Clarified scope of object-level admin view permissions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/a6d3aa22a5ca5a3519cee39cf358ebdfa9fa1756\"\u003e\u003ccode\u003ea6d3aa2\u003c/code\u003e\u003c/a\u003e [6.1.x] Corrected heading hierarchy in the admin actions documentation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/9031d4185a7eaf4056dc3161859b8fe5874f0c28\"\u003e\u003ccode\u003e9031d41\u003c/code\u003e\u003c/a\u003e [6.1.x] Clarified object-level permission checks in admin actions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fc805c6f3416c626074fdfaf992df09c02502737\"\u003e\u003ccode\u003efc805c6\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37311\"\u003e#37311\u003c/a\u003e -- Prevented consumption of rhs iterators in annotation ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/4b0185a5fb02a8c691bee4ce82e70174e061a228\"\u003e\u003ccode\u003e4b0185a\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37300\"\u003e#37300\u003c/a\u003e -- Preserved parent instance hints on custom Prefetch qu...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.1...6.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.1.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.1.0...26.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cairosvg` 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.16.1 to 6.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.18.0, 2026-09-07\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003cp\u003ePlease note that this release requires users which previously overwrote the default limits to migrate to the new approach: \u003ca href=\"https://pypdf.readthedocs.io/en/6.18.0/user/security.html#global\"\u003eDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIn short:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eapply_configuration\u003c/code\u003e as a context manager to temporarily overwrite configuration values.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eoverwrite_configuration\u003c/code\u003e to change the configuration values for the whole session.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe old overwrites should continue to work in most cases. If you have migrated successfully and do not need the legacy handling anymore (which can cause some overhead), consider using the temporary \u003ccode\u003edisable_legacy_handling\u003c/code\u003e setting:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom pypdf import overwrite_configuration\r\n\u003cp\u003eoverwrite_configuration(disable_legacy_handling=True)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eIn case you are experiencing some unexpected issues after the migration, consider opening a new issue (or commenting on an existing one) with the necessary details to reproduce it.\u003c/p\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDraw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.17.0...6.18.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e) by \u003ca href=\"https://github.com/petermik68-sudo\"\u003e\u003ccode\u003e@​petermik68-sudo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e) by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e) by \u003ca href=\"https://github.com/devYRPauli\"\u003e\u003ccode\u003e@​devYRPauli\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e) by \u003ca href=\"https://github.com/SomSamantray\"\u003e\u003ccode\u003e@​SomSamantray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.18.0, 2026-09-07\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDraw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.17.0...6.18.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs\u003c/li\u003e\n\u003cli\u003eSkip trailing duplicate %%EOF markers when locating startxref (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4015\"\u003e#4015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not crash on a non-array destination (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3976\"\u003e#3976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle annotations without subtype during merge (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse AnnotationFlag enum instead of plain integers (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3997\"\u003e#3997\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Style (STY)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple small changes detected from test runs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.2...6.17.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.16.2, 2026-08-23\u003c/h2\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake remove_from_tree() work on outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3939\"\u003e#3939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBe more lenient about space width in layout mode text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3992\"\u003e#3992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not scale the text leading by the font size (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate annotation appearance stream matrix on page transform (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3968\"\u003e#3968\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/py-pdf/pypdf/commit/18e4c226a4c2dd7f187854015f52e87350f84161\"\u003e\u003ccode\u003e18e4c22\u003c/code\u003e\u003c/a\u003e REL: 6.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/82501d2993c6387833c4949d205caeb188f8bb9e\"\u003e\u003ccode\u003e82501d2\u003c/code\u003e\u003c/a\u003e SEC: Limit allowed length of indirect object tokens (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4055\"\u003e#4055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/d35834b5373e80bda9b6d3537eac699170ca52fd\"\u003e\u003ccode\u003ed35834b\u003c/code\u003e\u003c/a\u003e ENH: Draw borders and backgrounds for appearance streams and annotations (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4033\"\u003e#4033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/4b16bbb5ba97360d68f431481cc6624ece1c6bd6\"\u003e\u003ccode\u003e4b16bbb\u003c/code\u003e\u003c/a\u003e STY: Rename variable for readability (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4049\"\u003e#4049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/a1ce7fb98e7491c59a7ce03977598649ab31d5fd\"\u003e\u003ccode\u003ea1ce7fb\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when a page tree entry is not a dictionary (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4048\"\u003e#4048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/06b97ced09de5b09c8e39dd2bfbc413f4a06be4a\"\u003e\u003ccode\u003e06b97ce\u003c/code\u003e\u003c/a\u003e DEV: Bump zizmorcore/zizmor-action from 0.6.2 to 0.6.3 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4053\"\u003e#4053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/d3f790cc9f201fe7e83ec2ec971aef361a746b75\"\u003e\u003ccode\u003ed3f790c\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when the annotations are not an array (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4046\"\u003e#4046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/3dc716eaf16b7982ff44d6f45649c51abec99e63\"\u003e\u003ccode\u003e3dc716e\u003c/code\u003e\u003c/a\u003e STY: Enforce lowercase function variables (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4045\"\u003e#4045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/ec2406f31146c28deb45c26fd833779570c4144a\"\u003e\u003ccode\u003eec2406f\u003c/code\u003e\u003c/a\u003e DEP: Rework configuration value handling (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4044\"\u003e#4044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/c76eed7bdd6c6a6f05dbcfea147bd41d6d21e598\"\u003e\u003ccode\u003ec76eed7\u003c/code\u003e\u003c/a\u003e REL: 6.17.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.1...6.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.1.1 to 8.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.0.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefreshed the toolbar's visual design with self-hosted Alef (panel titles) and Geist (body text) fonts, an updated color palette, and per-panel navigation icons.\u003c/li\u003e\n\u003cli\u003eAdded a new project logo and brand identity, designed by Robin of \u003ccode\u003eRBNX Studio \u0026lt;https://www.rbnx.studio\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a \u0026quot;Docs\u0026quot; link to the toolbar that opens the documentation.\u003c/li\u003e\n\u003cli\u003eChanged the highlight color for the current request and other \u0026quot;relevant to you\u0026quot; rows from yellow to a green tint, with a left border accent for legibility in dark mode.\u003c/li\u003e\n\u003cli\u003eAdded a design guidelines page to the documentation describing the project's logo, color palette and typography.\u003c/li\u003e\n\u003cli\u003eImproved toolbar accessibility: visible keyboard focus, keyboard-operable scroll regions, reduced-motion support, \u003ccode\u003earia-expanded\u003c/code\u003e on panel toggles, an \u003ccode\u003earia-live\u003c/code\u003e status for history refreshes, and WCAG 2.1 AA contrast in both themes.\u003c/li\u003e\n\u003cli\u003eAdded a talk to the resources documentation.\u003c/li\u003e\n\u003cli\u003eUpdated the example screenshot.\u003c/li\u003e\n\u003cli\u003eUpdated the screenshot capture logic to find the toolbar elements in the shadow DOM.\u003c/li\u003e\n\u003cli\u003eTrack and display processing time of application, including the toolbar's time, in the timer panel.\u003c/li\u003e\n\u003cli\u003eFixed the History panel rendering a duplicate Refresh button below the one in its title bar.\u003c/li\u003e\n\u003cli\u003eFixed the History panel's Refresh button submitting its form when clicked before the panel's script had loaded.\u003c/li\u003e\n\u003cli\u003eDocumented the \u003ccode\u003eUSE_SHADOW_DOM\u003c/code\u003e setting, which was added in 7.0.0 but was missing from the configuration documentation, and added test coverage for it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate the design interface of the toolbar by \u003ca href=\"https://github.com/VeldaKiara\"\u003e\u003ccode\u003e@​VeldaKiara\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2429\"\u003edjango-commons/django-debug-toolbar#2429\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated example screenshot of the toolbar with the new design. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2446\"\u003edjango-commons/django-debug-toolbar#2446\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typos in apps.py docstrings by \u003ca href=\"https://github.com/aoright\"\u003e\u003ccode\u003e@​aoright\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2452\"\u003edjango-commons/django-debug-toolbar#2452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTrack and display middleware time in the toolbar by \u003ca href=\"https://github.com/earthcomfy\"\u003e\u003ccode\u003e@​earthcomfy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2049\"\u003edjango-commons/django-debug-toolbar#2049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cache hit/miss reporting for \u003ccode\u003ecache.get()\u003c/code\u003e by \u003ca href=\"https://github.com/Harsh3006\"\u003e\u003ccode\u003e@​Harsh3006\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2418\"\u003edjango-commons/django-debug-toolbar#2418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSquare the toolbar handle corners facing the viewport edge by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2460\"\u003edjango-commons/django-debug-toolbar#2460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow a single Refresh button in the History panel by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2459\"\u003edjango-commons/django-debug-toolbar#2459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument and test the USE_SHADOW_DOM setting by \u003ca href=\"https://github.com/alissaahodge\"\u003e\u003ccode\u003e@​alissaahodge\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2461\"\u003edjango-commons/django-debug-toolbar#2461\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/aoright\"\u003e\u003ccode\u003e@​aoright\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2452\"\u003edjango-commons/django-debug-toolbar#2452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/earthcomfy\"\u003e\u003ccode\u003e@​earthcomfy\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2049\"\u003edjango-commons/django-debug-toolbar#2049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Harsh3006\"\u003e\u003ccode\u003e@​Harsh3006\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2418\"\u003edjango-commons/django-debug-toolbar#2418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alissaahodge\"\u003e\u003ccode\u003e@​alissaahodge\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2461\"\u003edjango-commons/django-debug-toolbar#2461\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.1...8.0.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.1...8.0.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/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.0.0 (2026-09-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefreshed the toolbar's visual design with self-hosted Alef (panel titles)\nand Geist (body text) fonts, an updated color palette, and per-panel\nnavigation icons.\u003c/li\u003e\n\u003cli\u003eAdded a new project logo and brand identity, designed by Robin of\n\u003ccode\u003eRBNX Studio \u0026lt;https://www.rbnx.studio\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a \u0026quot;Docs\u0026quot; link to the toolbar that opens the documentation.\u003c/li\u003e\n\u003cli\u003eChanged the highlight color for the current request and other\n\u0026quot;relevant to you\u0026quot; rows from yellow to a green tint, with a left border\naccent for legibility in dark mode.\u003c/li\u003e\n\u003cli\u003eAdded a design guidelines page to the documentation describing the project's\nlogo, color palette and typography.\u003c/li\u003e\n\u003cli\u003eImproved toolbar accessibility: visible keyboard focus, keyboard-operable\nscroll regions, reduced-motion support, \u003ccode\u003earia-expanded\u003c/code\u003e on panel toggles,\nan \u003ccode\u003earia-live\u003c/code\u003e status for history refreshes, and WCAG 2.1 AA contrast in\nboth themes.\u003c/li\u003e\n\u003cli\u003eAdded a talk to the resources documentation.\u003c/li\u003e\n\u003cli\u003eUpdated the example screenshot.\u003c/li\u003e\n\u003cli\u003eUpdated the screenshot capture logic to find the toolbar elements in the\nshadow DOM.\u003c/li\u003e\n\u003cli\u003eTrack and display processing time of application, including the toolbar's\ntime, in the timer panel.\u003c/li\u003e\n\u003cli\u003eFixed the History panel rendering a duplicate Refresh button below the one\nin its title bar.\u003c/li\u003e\n\u003cli\u003eFixed the History panel's Refresh button submitting its form when clicked\nbefore the panel's script had loaded.\u003c/li\u003e\n\u003cli\u003eDocumented the \u003ccode\u003eUSE_SHADOW_DOM\u003c/code\u003e setting, which was added in 7.0.0 but was\nmissing from the configuration documentation, and added test coverage for it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/85b98c6a93e1ff906f07545e98d8e4085424d005\"\u003e\u003ccode\u003e85b98c6\u003c/code\u003e\u003c/a\u003e Version 8.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/8fb3fe874881b46e6490e60f78f47f2ef4bc13ec\"\u003e\u003ccode\u003e8fb3fe8\u003c/code\u003e\u003c/a\u003e Document and test the USE_SHADOW_DOM setting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3f748fc093684496d53561dacb0a98b4b0345873\"\u003e\u003ccode\u003e3f748fc\u003c/code\u003e\u003c/a\u003e Show a single Refresh button in the History panel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/19fce30bfeb2b1cb77515df9bc47549f2607d3c7\"\u003e\u003ccode\u003e19fce30\u003c/code\u003e\u003c/a\u003e Square the toolbar handle corners facing the viewport edge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/ff94889178bc247a79093375b12ea68ab509ac1b\"\u003e\u003ccode\u003eff94889\u003c/code\u003e\u003c/a\u003e Bump the minor-npm-dependencies group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/65f68543551f6747cc6e38977d7a0082a63287e9\"\u003e\u003ccode\u003e65f6854\u003c/code\u003e\u003c/a\u003e Bump py-cov-action/python-coverage-comment-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/c7dc154a68077273718d1b2751bc6a6f15c7e20a\"\u003e\u003ccode\u003ec7dc154\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/93e89b132420db582ef0465c8508a744b9bc05b7\"\u003e\u003ccode\u003e93e89b1\u003c/code\u003e\u003c/a\u003e Fix CI with spelling words and biome schema version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/ecf3e1e7745993da27546c639d0652ff69a25791\"\u003e\u003ccode\u003eecf3e1e\u003c/code\u003e\u003c/a\u003e Make the cache discussion link open in a new tab.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/28996cc6050f55b0a57394ca954e1163030998f4\"\u003e\u003ccode\u003e28996cc\u003c/code\u003e\u003c/a\u003e Improve cache hit/miss reporting for cache.get()\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.1...8.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-unfold` from 0.104.1 to 0.105.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/unfoldadmin/django-unfold/releases\"\u003edjango-unfold's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.105.0\u003c/h2\u003e\n\u003ch2\u003ev0.105.0 (2026-09-04)\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eThis release is published under the MIT License.\u003c/em\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAction decorator typing (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2239\"\u003e#2239\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/1da3c6e5298e002c9947d8eb377bac8cac15c810\"\u003e\u003ccode\u003e1da3c6e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAutocomplete dropdown search focus (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2220\"\u003e#2220\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/89f6fbd242c000acc27dfafcfc52038c14b07dab\"\u003e\u003ccode\u003e89f6fbd\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChangelist th wrapper_class (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2261\"\u003e#2261\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/58dcd8909fe26b60c97451744e6a18143f0aefcb\"\u003e\u003ccode\u003e58dcd89\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDashboard dark mode (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2248\"\u003e#2248\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/dc52ff01b9e1e87bbcc59ce2ae8fde2b5d34bf06\"\u003e\u003ccode\u003edc52ff0\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable changeform line fields (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2244\"\u003e#2244\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/73d090cde161646e3f2ddcb65b250a3bb0f82dcd\"\u003e\u003ccode\u003e73d090c\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable djangoql autofocus (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2233\"\u003e#2233\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/695aa780a99429790307a6297e7c839866328fe0\"\u003e\u003ccode\u003e695aa78\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable modal autofocus (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2228\"\u003e#2228\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/c7329b6052db0666ad700c2d51c2a72e8ef9afc5\"\u003e\u003ccode\u003ec7329b6\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable select for row action icon (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2242\"\u003e#2242\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/e64f568d0761b9e72c46b406a5f32481bdd8b56f\"\u003e\u003ccode\u003ee64f568\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMoney widget typing (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2240\"\u003e#2240\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/8f1422fe17d491ffe58107bbd7fff97fe005572a\"\u003e\u003ccode\u003e8f1422f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent displaying empty messages div (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2246\"\u003e#2246\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/ab063310f8eed9637c36960f3233cdea81028918\"\u003e\u003ccode\u003eab06331\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResolve order for active item in sidebar navigation (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2231\"\u003e#2231\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/e0bab543d9117d4680c1153a83de090563a294f8\"\u003e\u003ccode\u003ee0bab54\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCompiling tailwind (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2251\"\u003e#2251\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/c381c2e3a3f7f1977bcd5f50401c0f4786366b73\"\u003e\u003ccode\u003ec381c2e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eStacked inlines formatting (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2234\"\u003e#2234\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/da5db27f40c2f90e0e3d06607097d1297d2e556f\"\u003e\u003ccode\u003eda5db27\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAvatar badge (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2263\"\u003e#2263\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/981c203a7d40e829fd9518a6243bb02c8c3acd71\"\u003e\u003ccode\u003e981c203\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChart settings (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2262\"\u003e#2262\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/171ce5aff57e2c0056758c5c98a157c8c0889a00\"\u003e\u003ccode\u003e171ce5a\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChart x-axis display option (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2257\"\u003e#2257\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/4dc6ddc2a0320966da0766c778c7b1e6431da200\"\u003e\u003ccode\u003e4dc6ddc\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDashboard apps hover (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2254\"\u003e#2254\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/f6c8c6de1dce48cb4a71b3d53289a00aac093bf0\"\u003e\u003ccode\u003ef6c8c6d\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDefault dashboard scrolling history (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2249\"\u003e#2249\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/13ea6c06c8483dcbe8ce5abbdb7adf565558316d\"\u003e\u003ccode\u003e13ea6c0\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisplay decorator price formatter (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2264\"\u003e#2264\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/903e15ba83bbc8fc3e3ae6360970275627ed575e\"\u003e\u003ccode\u003e903e15b\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eModal animations (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2229\"\u003e#2229\u003c/a\u003e, \u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/a38fe2f964fa5bd137989e182800876b76f2a0c9\"\u003e\u003ccode\u003ea38fe2f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/unfoldadmin/django-unfold/blob/main/CHANGELOG.md\"\u003edjango-unfold's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.105.0 (2026-09-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAction decorator typing (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2239\"\u003e#2239\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/1da3c6e5298e002c9947d8eb377bac8cac15c810\"\u003e\u003ccode\u003e1da3c6e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAutocomplete dropdown search focus\n(\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2220\"\u003e#2220\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/89f6fbd242c000acc27dfafcfc52038c14b07dab\"\u003e\u003ccode\u003e89f6fbd\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChangelist th wrapper_class (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2261\"\u003e#2261\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/58dcd8909fe26b60c97451744e6a18143f0aefcb\"\u003e\u003ccode\u003e58dcd89\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDashboard dark mode (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2248\"\u003e#2248\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/dc52ff01b9e1e87bbcc59ce2ae8fde2b5d34bf06\"\u003e\u003ccode\u003edc52ff0\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable changeform line fields (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2244\"\u003e#2244\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/73d090cde161646e3f2ddcb65b250a3bb0f82dcd\"\u003e\u003ccode\u003e73d090c\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable djangoql autofocus (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2233\"\u003e#2233\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/695aa780a99429790307a6297e7c839866328fe0\"\u003e\u003ccode\u003e695aa78\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable modal autofocus (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2228\"\u003e#2228\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/c7329b6052db0666ad700c2d51c2a72e8ef9afc5\"\u003e\u003ccode\u003ec7329b6\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDisable select for row action icon\n(\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2242\"\u003e#2242\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/e64f568d0761b9e72c46b406a5f32481bdd8b56f\"\u003e\u003ccode\u003ee64f568\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMoney widget typing (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2240\"\u003e#2240\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/8f1422fe17d491ffe58107bbd7fff97fe005572a\"\u003e\u003ccode\u003e8f1422f\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePrevent displaying empty messages div\n(\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2246\"\u003e#2246\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/ab063310f8eed9637c36960f3233cdea81028918\"\u003e\u003ccode\u003eab06331\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eResolve order for active item in sidebar navigation\n(\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2231\"\u003e#2231\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/e0bab543d9117d4680c1153a83de090563a294f8\"\u003e\u003ccode\u003ee0bab54\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCompiling tailwind (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2251\"\u003e#2251\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/c381c2e3a3f7f1977bcd5f50401c0f4786366b73\"\u003e\u003ccode\u003ec381c2e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eStacked inlines formatting (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/pull/2234\"\u003e#2234\u003c/a\u003e,\n\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/da5db27f40c2f90e0e3d06607097d1297d2e556f\"\u003e\u003ccode\u003eda5db27\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\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/unfoldadmin/django-unfold/commit/3d41ca4f79d0bc6f611309aaa3a70d38f9e95998\"\u003e\u003ccode\u003e3d41ca4\u003c/code\u003e\u003c/a\u003e 0.105.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/903e15ba83bbc8fc3e3ae6360970275627ed575e\"\u003e\u003ccode\u003e903e15b\u003c/code\u003e\u003c/a\u003e feat: display decorator price formatter (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2264\"\u003e#2264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/981c203a7d40e829fd9518a6243bb02c8c3acd71\"\u003e\u003ccode\u003e981c203\u003c/code\u003e\u003c/a\u003e feat: avatar badge (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2263\"\u003e#2263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/171ce5aff57e2c0056758c5c98a157c8c0889a00\"\u003e\u003ccode\u003e171ce5a\u003c/code\u003e\u003c/a\u003e feat: chart settings (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2262\"\u003e#2262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/58dcd8909fe26b60c97451744e6a18143f0aefcb\"\u003e\u003ccode\u003e58dcd89\u003c/code\u003e\u003c/a\u003e fix: changelist th wrapper_class (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2261\"\u003e#2261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/2681736d7fdf9002dd73eae52b74c47def1269db\"\u003e\u003ccode\u003e2681736\u003c/code\u003e\u003c/a\u003e chore(deps): bump \u003ca href=\"https://github.com/adamchainz/django-upgrade\"\u003ehttps://github.com/adamchainz/django-upgrade\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2259\"\u003e#2259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/e760aa451ebd80c8223d04d73b67c2563f8d0da3\"\u003e\u003ccode\u003ee760aa4\u003c/code\u003e\u003c/a\u003e chore(deps): bump \u003ca href=\"https://github.com/astral-sh/ruff-pre-commit\"\u003ehttps://github.com/astral-sh/ruff-pre-commit\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2258\"\u003e#2258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/4dc6ddc2a0320966da0766c778c7b1e6431da200\"\u003e\u003ccode\u003e4dc6ddc\u003c/code\u003e\u003c/a\u003e feat: chart x-axis display option (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2257\"\u003e#2257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/52580c0a44f176bc9eb7488b34ca25ee504e2b63\"\u003e\u003ccode\u003e52580c0\u003c/code\u003e\u003c/a\u003e chore: build styles (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2256\"\u003e#2256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unfoldadmin/django-unfold/commit/f6c8c6de1dce48cb4a71b3d53289a00aac093bf0\"\u003e\u003ccode\u003ef6c8c6d\u003c/code\u003e\u003c/a\u003e feat: dashboard apps hover (\u003ca href=\"https://redirect.github.com/unfoldadmin/django-unfold/issues/2254\"\u003e#2254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/unfoldadmin/django-unfold/compare/0.104.1...0.105.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.16.3 to 0.16.6\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.16.6\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\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-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\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/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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.16.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\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-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\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/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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/22f65a2ab5052990503985c7c794de37598d531e\"\u003e\u003ccode\u003e22f65a2\u003c/code\u003e\u003c/a\u003e Bump 0.16.6 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28280\"\u003e#28280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7cc9f1ed53e5ce175f17fde3a75fe792ac41e8cd\"\u003e\u003ccode\u003e7cc9f1e\u003c/code\u003e\u003c/a\u003e [ty] Document \u003ccode\u003eCallableTypeKind\u003c/code\u003e variants (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28277\"\u003e#28277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/056ce07a895c217dab7929a616540c246cf8a078\"\u003e\u003ccode\u003e056ce07\u003c/code\u003e\u003c/a\u003e Add UV_LOCKED to all workflows (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28261\"\u003e#28261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6d6e35d03a72d23d3b0f23fb348692b03c9b81b6\"\u003e\u003ccode\u003e6d6e35d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80b4891b64cb916dce080e8fa15af5c2179d776a\"\u003e\u003ccode\u003e80b4891\u003c/code\u003e\u003c/a\u003e [ty] Temporarily disable tuple types in property tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28275\"\u003e#28275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3f7a54d1d7b9480a18d86a8211bf676354a2f8a0\"\u003e\u003ccode\u003e3f7a54d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/35656cf37d34f30116d4f4a9cb13853a6ad9fd0d\"\u003e\u003ccode\u003e35656cf\u003c/code\u003e\u003c/a\u003e [ty] Preserve deprecations on decorated callables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28256\"\u003e#28256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d2626c866ee08495cfa0da5236e130030d37e0cf\"\u003e\u003ccode\u003ed2626c8\u003c/code\u003e\u003c/a\u003e [ty] Reject missing attributes on \u003ccode\u003etype[]\u003c/code\u003e aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28267\"\u003e#28267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ee6a6d19aa0707df942febe9768488d39f383c8c\"\u003e\u003ccode\u003eee6a6d1\u003c/code\u003e\u003c/a\u003e [ty] Support ParamSpecs in \u003ccode\u003eConstraintSet\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28028\"\u003e#28028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f6a170080dab08f754ef086369a2623c70f753d\"\u003e\u003ccode\u003e7f6a170\u003c/code\u003e\u003c/a\u003e [ty] Move bound APIs to constraint owners (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28094\"\u003e#28094\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.3...0.16.6\"\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/ragusa87/membership-swiss-manager/pull/148","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ragusa87%2Fmembership-swiss-manager/issues/148","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/148/packages"}},{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":null,"pr_created_at":"2026-09-12T01:04:21.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"5430259056","node_id":"PR_kwDOK-sKf88AAAABDN1soA","number":152,"state":"open","title":"Bump the pip-deps group across 1 directory with 16 updates","user":"dependabot[bot]","labels":["skip changelog","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-12T01:04:21.000Z","updated_at":"2026-09-12T01:06:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-deps","update_count":16,"packages":[{"name":"cairosvg","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"},{"name":"certifi","old_version":"2026.5.20","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.7","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.4.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cssselect2","old_version":"0.9.0","new_version":"0.10.1","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"markdown","old_version":"3.10.2","new_version":"3.10.3","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"mkdocs-material","old_version":"9.7.6","new_version":"9.7.7","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"packaging","old_version":"26.2","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.10.0","new_version":"4.11.8","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pymdown-extensions","old_version":"10.21.3","new_version":"11.0.2","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"regex","old_version":"2026.5.9","new_version":"2026.9.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-deps group with 16 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [cairosvg](https://github.com/Kozea/CairoSVG) | `2.9.0` | `2.9.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.5.20` | `2026.7.22` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.7` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.4.1` | `8.5.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.9.0` | `0.10.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.2` | `3.10.3` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.6` | `9.7.7` |\n| [packaging](https://github.com/pypa/packaging) | `26.2` | `26.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.10.0` | `4.11.8` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.21.3` | `11.0.2` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.5.9` | `2026.9.3` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n\n\nUpdates `cairosvg` 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.5.20 to 2026.7.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f4bc676bc101fe2235846e37044e8c693d6cbaf4\"\u003e\u003ccode\u003ef4bc676\u003c/code\u003e\u003c/a\u003e 2026.07.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4c91f9c5f9b4676d40d2930025ba04d80dd536f6\"\u003e\u003ccode\u003e4c91f9c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.3.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/01a66c5cf32eadb8f03a0504c24cb44f6d581248\"\u003e\u003ccode\u003e01a66c5\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/eb355f41cb71f71012ecf1a4d27a57d0ee2b1337\"\u003e\u003ccode\u003eeb355f4\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.14.0 to 1.14.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/425\"\u003e#425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/474e6fc996d55b91632248da0bade702504e62dc\"\u003e\u003ccode\u003e474e6fc\u003c/code\u003e\u003c/a\u003e Include tests in the source distribution (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/424\"\u003e#424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a31ef39bb5906af7dc9729890f7e4e04e75afdae\"\u003e\u003ccode\u003ea31ef39\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.2.0 to 6.3.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/98eb2c76a9c7a8519912023dca00f762bbcd59af\"\u003e\u003ccode\u003e98eb2c7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.3 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d0ac52f3d93a514224197c7efb66c41b1beae5d1\"\u003e\u003ccode\u003ed0ac52f\u003c/code\u003e\u003c/a\u003e 2026.06.17 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/418\"\u003e#418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d46de621787c609158579929f44b91ce731d01b8\"\u003e\u003ccode\u003ed46de62\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.2 to 6.0.3 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6c183ec39d81135350dd44abd0e5daefc8e35b9d\"\u003e\u003ccode\u003e6c183ec\u003c/code\u003e\u003c/a\u003e fix: update Requests docs link to canonical URL (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.05.20...2026.07.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 2.0.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15 and support for C extensions generated by CFFI\nto target the new \u003ccode\u003eabi3t\u003c/code\u003e free-threaded ABI.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecffi-gen-src\u003c/code\u003e CLI to generate CFFI C extension source for alternate build backend support.\u003c/li\u003e\n\u003cli\u003eFixed crashes inside \u003ccode\u003e__delitem__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u0026quot;string too big\u0026quot; error under MSVC.\u003c/li\u003e\n\u003cli\u003eFixed mingw builds.\u003c/li\u003e\n\u003cli\u003eAdded support for arm64 iOS wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/d9f6f70adac5ca9f260abf5405cf4d0373767b65\"\u003e\u003ccode\u003ed9f6f70\u003c/code\u003e\u003c/a\u003e New release 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/02a7b0e32db93964b9756537110119d74aa23425\"\u003e\u003ccode\u003e02a7b0e\u003c/code\u003e\u003c/a\u003e Misc pre-2.1 release/packaging cleanup (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/1362e5ddc5417f1350200d4d6183c3eb3da9cc8d\"\u003e\u003ccode\u003e1362e5d\u003c/code\u003e\u003c/a\u003e Move cffi-gen-src release note to 2.1.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a797055125e049fd79483d0dcdf8cff59c64c6e4\"\u003e\u003ccode\u003ea797055\u003c/code\u003e\u003c/a\u003e Make error message when embedding version test fails more friendly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/f1f40a8e1667b9ef6cf8fe3c451829408feab018\"\u003e\u003ccode\u003ef1f40a8\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/dc62c93af7be7c535dc17f621de2bfc99490d3bd\"\u003e\u003ccode\u003edc62c93\u003c/code\u003e\u003c/a\u003e Delete missed cp39 Windows builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a34118009e64a7fed8ea49bdbad4d6a07494bb4f\"\u003e\u003ccode\u003ea341180\u003c/code\u003e\u003c/a\u003e Update version numbers to prepare for v2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/9f04d8506a6c7186dc3be7316f21aab042e075cb\"\u003e\u003ccode\u003e9f04d85\u003c/code\u003e\u003c/a\u003e Mark test using inet_ntoa as thread-unsafe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0...v2.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.7 to 3.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\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/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWall import time due to cascade codec imports for our multibyte first sort of iana supported codecs (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/742\"\u003e#742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUnnecessary json import at runtime (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/753\"\u003e#753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInverse capitalization not seen by noise detector (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/731\"\u003e#731\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/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a05917f87b5f71d6022d8abe2b0af239f65c1111\"\u003e\u003ccode\u003ea05917f\u003c/code\u003e\u003c/a\u003e chore: allow setuptools 84 builds (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/3325d87c3c73fa1a8746947151faaf9a41177543\"\u003e\u003ccode\u003e3325d87\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/792\"\u003e#792\u003c/a\u003e from jawah/update-cibuildwheel-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/77203b104216a6d578a682b5ac0514750aa988f7\"\u003e\u003ccode\u003e77203b1\u003c/code\u003e\u003c/a\u003e chore: reformat noxfile.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.7...3.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.4.1 to 8.5.0\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.5.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.5.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.5.0/\"\u003ehttps://pypi.org/project/click/8.5.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-5-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-5-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/33\"\u003ehttps://github.com/pallets/click/milestone/33\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2672\"\u003e#2672\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3637\"\u003e#3637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2986\"\u003e#2986\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3505\"\u003e#3505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2983\"\u003e#2983\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3473\"\u003e#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when \u003ca href=\"https://redirect.github.com/pallets/click/issues/2969\"\u003e#2969\u003c/a\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3572\"\u003e#3572\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3653\"\u003e#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2877\"\u003e#2877\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3642\"\u003e#3642\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). \u003ca href=\"https://redirect.github.com/pallets/click/issues/3581\"\u003e#3581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3677\"\u003e#3677\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2819\"\u003e#2819\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3678\"\u003e#3678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3681\"\u003e#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.md\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.5.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-08-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd built-in shell completion support for PowerShell (Windows PowerShell\n5.1+ and pwsh 7+) alongside the existing \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003ezsh\u003c/code\u003e, and \u003ccode\u003efish\u003c/code\u003e\ncompleters. Use \u003ccode\u003e_FOO_BAR_COMPLETE=powershell_source foo-bar\u003c/code\u003e to generate\nthe completion script. {issue}\u003ccode\u003e2672\u003c/code\u003e {pr}\u003ccode\u003e3637\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSupported versions of Windows enable ANSI terminal styles by default.\nColorama is no longer a dependency and is not used. {issue}\u003ccode\u003e2986\u003c/code\u003e {pr}\u003ccode\u003e3505\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003eArgument\u003c/code\u003e accepts a \u003ccode\u003ehelp\u003c/code\u003e parameter, and help output includes\na \u003ccode\u003ePositional arguments\u003c/code\u003e section when argument help is available. {issue}\u003ccode\u003e2983\u003c/code\u003e {pr}\u003ccode\u003e3473\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econfirm()\u003c/code\u003e and \u003ccode\u003eprompt()\u003c/code\u003e strip ANSI color and style codes from the\nprompt when the output stream does not support them, matching \u003ccode\u003eecho()\u003c/code\u003e.\nThis stripping was lost in \u003ccode\u003e8.4.0\u003c/code\u003e when {pr}\u003ccode\u003e2969\u003c/code\u003e began writing the\nprompt with \u003ccode\u003einput()\u003c/code\u003e directly. {issue}\u003ccode\u003e3572\u003c/code\u003e {pr}\u003ccode\u003e3653\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix test failures when using pytest \u0026gt;= 9.1. {pr}\u003ccode\u003e3656\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{class}\u003ccode\u003ePath\u003c/code\u003e with \u003ccode\u003eallow_dash=True\u003c/code\u003e no longer triggers a \u003ccode\u003eBytesWarning\u003c/code\u003e,\nan error under \u003ccode\u003epython -bb\u003c/code\u003e, when checking a value against the \u003ccode\u003e-\u003c/code\u003e\nconvention. {issue}\u003ccode\u003e2877\u003c/code\u003e {pr}\u003ccode\u003e3642\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd {func}\u003ccode\u003ecustom_version_option\u003c/code\u003e, a \u003ccode\u003e--version\u003c/code\u003e option whose output is\nproduced by a callback, covering cases {func}\u003ccode\u003eversion_option\u003c/code\u003e intentionally\ndoes not. The feature set of {func}\u003ccode\u003eversion_option\u003c/code\u003e is now frozen; see\n[discussion \u003ca href=\"https://redirect.github.com/pallets/click/issues/3527\"\u003e#3527\u003c/a\u003e](\u003ca href=\"https://github.com/pallets/click/discussions/3527\"\u003ehttps://github.com/pallets/click/discussions/3527\u003c/a\u003e). {pr}\u003ccode\u003e3581\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estyle()\u003c/code\u003e and \u003ccode\u003esecho()\u003c/code\u003e no longer silently drop the 256-color index \u003ccode\u003e0\u003c/code\u003e\n(black) passed as \u003ccode\u003efg\u003c/code\u003e or \u003ccode\u003ebg\u003c/code\u003e, and now validate color arguments. Invalid\ncolors raise a \u003ccode\u003eValueError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e. {pr}\u003ccode\u003e3677\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe automatic help option stores its value under the reserved name\n\u003ccode\u003e_click_default_help\u003c/code\u003e instead of \u003ccode\u003ehelp\u003c/code\u003e, so a parameter named \u003ccode\u003ehelp\u003c/code\u003e no\nlonger breaks parsing. The new name is visible in\n{meth}\u003ccode\u003eCommand.to_info_dict\u003c/code\u003e output. Parameters that overwrite each other's\nvalue trigger a warning: an argument sharing its name with another\nparameter, or any parameter claiming the reserved name. Options may still\nshare a name to compete for the same value (feature switches).\n{issue}\u003ccode\u003e2819\u003c/code\u003e {pr}\u003ccode\u003e3678\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunstyle\u003c/code\u003e and the ANSI handling behind help-text wrapping now strip the full\nCSI escape-sequence grammar. {pr}\u003ccode\u003e3681\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eStreamline \u003ccode\u003eOption\u003c/code\u003e flag handling: the flag-kind, type, lazy-default and\nvalidation steps in \u003ccode\u003eOption.__init__\u003c/code\u003e move into focused helpers, and\n\u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003edefault\u003c/code\u003e keep their unset sentinel at construction\n(resolved lazily on read) so \u003ccode\u003eis UNSET\u003c/code\u003e reliably tells a user-supplied value\nfrom an auto-derived one. Runtime behavior is unchanged, but\n{meth}\u003ccode\u003eParameter.to_info_dict\u003c/code\u003e now resolves \u003ccode\u003edefault=True\u003c/code\u003e on a feature\nswitch to its \u003ccode\u003eflag_value\u003c/code\u003e, matching what the function receives at call\ntime. {pr}\u003ccode\u003e3641\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e{func}\u003ccode\u003eget_binary_stream\u003c/code\u003e and {func}\u003ccode\u003eget_text_stream\u003c/code\u003e are deprecated and\nwill be removed in Click 9.0. {issue}\u003ccode\u003e3481\u003c/code\u003e {pr}\u003ccode\u003e3695\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe following \u003ccode\u003eclick.utils\u003c/code\u003e names were never intentionally public and are\nnow private (\u003ccode\u003e_\u003c/code\u003e-prefixed). The old names remain available with a\n\u003ccode\u003eDeprecationWarning\u003c/code\u003e until Click 9.0: \u003ccode\u003eLazyFile\u003c/code\u003e, \u003ccode\u003eKeepOpenFile\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/pallets/click/commit/8b19813f2bfca99f1018a587a8cf54fc959f2e5d\"\u003e\u003ccode\u003e8b19813\u003c/code\u003e\u003c/a\u003e Release version 8.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2c8cd3ac958a7eb316d67f2d316c27086c4c0369\"\u003e\u003ccode\u003e2c8cd3a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/131c86aadddfa5cb6dca8339c9d6294c4eacb8ac\"\u003e\u003ccode\u003e131c86a\u003c/code\u003e\u003c/a\u003e Add FAQ entry about \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e on Windows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e1fd5946ab26aaf372009eaff1acf947140b40fb\"\u003e\u003ccode\u003ee1fd594\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3781\"\u003e#3781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a1d87858abd77fa8e3ffc204670ccd75b96c4781\"\u003e\u003ccode\u003ea1d8785\u003c/code\u003e\u003c/a\u003e Add support of \u003ccode\u003epathlib.Path\u003c/code\u003e to \u003ccode\u003eedit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2103e157683c5e4cadc8ee1838df526a54bde9a4\"\u003e\u003ccode\u003e2103e15\u003c/code\u003e\u003c/a\u003e Forward all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e and improve flag detection (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a6256bfb5971d5e58585fe7b6c656134e1ade5a4\"\u003e\u003ccode\u003ea6256bf\u003c/code\u003e\u003c/a\u003e Forwards all user's parameters set in \u003ccode\u003ePAGER\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/61b69e967e525bd502f5bf42def4d551e761fe0e\"\u003e\u003ccode\u003e61b69e9\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9835b0f7612d1b1ea180a975fd6d24cf16791ba8\"\u003e\u003ccode\u003e9835b0f\u003c/code\u003e\u003c/a\u003e Resolve the pager command once, in \u003ccode\u003e_pager_contextmanager\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f36d58bbd7f188178de2d4fe1d0292c510375ca7\"\u003e\u003ccode\u003ef36d58b\u003c/code\u003e\u003c/a\u003e Refactor pager stream handling (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3767\"\u003e#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.4.1...8.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cssselect2` from 0.9.0 to 0.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/cssselect2/releases\"\u003ecssselect2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix packaging\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport CSS Notes\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/Kozea/cssselect2/blob/main/docs/changelog.rst\"\u003ecssselect2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cp\u003eVersion 0.10.1\n..............\u003c/p\u003e\n\u003cp\u003eReleased on 2026-08-31.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix packaging\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.10.0\n..............\u003c/p\u003e\n\u003cp\u003eReleased on 2026-08-31.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport CSS Notes\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.9.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, support 3.14\u003c/li\u003e\n\u003cli\u003eSupport :host\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.8.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2025-03-05.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.8 and 3.9, support 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eHandle case-sensitive and case-insensitive attribute selectors\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.7.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-09-19.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport :has selector\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.6.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-04-15.\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/Kozea/cssselect2/commit/dc2690c6b434d87634ed5dc208c9de4038755463\"\u003e\u003ccode\u003edc2690c\u003c/code\u003e\u003c/a\u003e Version 0.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/c0b7638ab2eff2bc6c7cfb41f5891c0bf28e1845\"\u003e\u003ccode\u003ec0b7638\u003c/code\u003e\u003c/a\u003e Use VCS for packaging\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/3c865eda60a87f80ddc409621680dbc248f58687\"\u003e\u003ccode\u003e3c865ed\u003c/code\u003e\u003c/a\u003e Version 0.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/d1c8ba8fd29e552233dcef66efbeba6688840657\"\u003e\u003ccode\u003ed1c8ba8\u003c/code\u003e\u003c/a\u003e Update CI dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/869184347ed3ceb75fb82e45f963dc12a1edac31\"\u003e\u003ccode\u003e8691843\u003c/code\u003e\u003c/a\u003e Check more lint rules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/913dc6d1dfa41844210329c9732ec9fab95eca95\"\u003e\u003ccode\u003e913dc6d\u003c/code\u003e\u003c/a\u003e Allow to build package with flit 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/8b92c9f2fb4db7f8e4c1d39c64264a998bcd0563\"\u003e\u003ccode\u003e8b92c9f\u003c/code\u003e\u003c/a\u003e Use HTTP server for Doconfly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/cssselect2/commit/b67fbfde986002fdc684a9b2d534b2bd35f21f89\"\u003e\u003ccode\u003eb67fbfd\u003c/code\u003e\u003c/a\u003e Support CSS Notes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/cssselect2/compare/0.9.0...0.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.18 to 3.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\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/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this 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/kjd/idna/commit/03a9a11dd8aecd4fea742cabe20f4d3d9ed82abb\"\u003e\u003ccode\u003e03a9a11\u003c/code\u003e\u003c/a\u003e Release 3.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2d2a7ef0c59210a48407b3dde6d884933cecf093\"\u003e\u003ccode\u003e2d2a7ef\u003c/code\u003e\u003c/a\u003e Pre-release 3.19rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5cce1308d148019c5fa0febceafa13e99cdacfe7\"\u003e\u003ccode\u003e5cce130\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/268\"\u003e#268\u003c/a\u003e from kjd/fix-std3-regex-alert\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/3914b75f3e4cbc11e59f92eeecdb16d10871e57f\"\u003e\u003ccode\u003e3914b75\u003c/code\u003e\u003c/a\u003e Split the STD3 disallowed-character range so uppercase is explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ce9fd98ac4073866db276e93834b259f2a5a4ac4\"\u003e\u003ccode\u003ece9fd98\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/267\"\u003e#267\u003c/a\u003e from kjd/housekeeping\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/809240c3cc9358c9c9c79b2d12ffe39e75ccfb0f\"\u003e\u003ccode\u003e809240c\u003c/code\u003e\u003c/a\u003e Fail CI when the license copyright year is behind the current year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d9e16c523d7d25dcc14100fa80f3e303404e09be\"\u003e\u003ccode\u003ed9e16c5\u003c/code\u003e\u003c/a\u003e Consolidate test fixtures, prune stale gitignore entries, and fix doc typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ef30feeed3a758e96286fdab0315a551f7f5e7d6\"\u003e\u003ccode\u003eef30fee\u003c/code\u003e\u003c/a\u003e Remove dead code and pare back superfluous comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b907913f854d26cc714f721c6c2cb626d41ac468\"\u003e\u003ccode\u003eb907913\u003c/code\u003e\u003c/a\u003e Tighten the version support and Unicode notes in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/6204cbe343ef438df7c58bc80b94d0f960991d90\"\u003e\u003ccode\u003e6204cbe\u003c/code\u003e\u003c/a\u003e Ignore local build artifacts and stop packaging stray tooling config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.18...v3.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.10.2 to 3.10.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eSetextHeaderProcessor\u003c/code\u003e regex to prevent mixed \u003ccode\u003e=\u003c/code\u003e and \u003ccode\u003e-\u003c/code\u003e chars in setext-style headers (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1606\"\u003e#1606\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd AI Policy to Contributing Guide.\u003c/li\u003e\n\u003cli\u003eOfficially document all included extensions as being in maintenance mode.\u003c/li\u003e\n\u003cli\u003eLink the Extension API documentation to the API Reference (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1612\"\u003e#1612\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.3] - 2026-07-30\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eSetextHeaderProcessor\u003c/code\u003e regex to prevent mixed \u003ccode\u003e=\u003c/code\u003e and \u003ccode\u003e-\u003c/code\u003e chars in setext-style headers (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1606\"\u003e#1606\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd AI Policy to Contributing Guide.\u003c/li\u003e\n\u003cli\u003eOfficially document all included extensions as being in maintenance mode.\u003c/li\u003e\n\u003cli\u003eLink the Extension API documentation to the API Reference (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1612\"\u003e#1612\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/bb50627dc07fde6ee5ed7478464062c537ebad2c\"\u003e\u003ccode\u003ebb50627\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/8453df010daf9547efcc20a05bb12c0e2fd2016a\"\u003e\u003ccode\u003e8453df0\u003c/code\u003e\u003c/a\u003e Update Extension API documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/93ac448b161deb5a4578c7f56bd5f5c39dc280c3\"\u003e\u003ccode\u003e93ac448\u003c/code\u003e\u003c/a\u003e Document that all extensions are in maintenance mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/d38fd4a6ee4ef897812bc481855a7f9d8a4ad4f1\"\u003e\u003ccode\u003ed38fd4a\u003c/code\u003e\u003c/a\u003e Create AI Policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/ddead47873e7918829e1d8b0eaee6ab725793cc9\"\u003e\u003ccode\u003eddead47\u003c/code\u003e\u003c/a\u003e Prevent mixed =/- chars in Setext-style headings\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.10.2...3.10.3\"\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.7.6 to 9.7.7\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.7\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is approaching end of life\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eMaterial for MkDocs is scheduled to reach end of life on November 5, 2026. Until then, maintenance is limited to critical bug fixes and security updates. After this date, the project will remain available on PyPI and GitHub, but no further maintenance is planned except in exceptional circumstances.\u003c/p\u003e\n\u003cp\u003eFor users looking for a long-term, actively developed successor, we're building \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e – a next-generation static site generator designed for technical documentation. If you're planning a new documentation project or evaluating your long-term options, we invite you to take a look.\u003c/p\u003e\n\u003cp\u003eOrganizations requiring support beyond this date are welcome to get in touch to discuss available options.\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\u003eFixed a DOM-based XSS vulnerability in search suggestions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/p\"\u003e\u003ccode\u003e@​p\u003c/code\u003e\u003c/a\u003e- for responsibly reporting this issue.\u003c/p\u003e\n\u003c/blockquote\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/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.7 (2026-07-17)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed DOM-based XSS vulnerability in search suggestions\u003c/li\u003e\n\u003c/ul\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\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/b3e6dd886a974aa8200759ecfd7db28c598a2894\"\u003e\u003ccode\u003eb3e6dd8\u003c/code\u003e\u003c/a\u003e Prepare 9.7.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/52fb6be8aafe326419f34dc94d3211e7bbfbfb25\"\u003e\u003ccode\u003e52fb6be\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/901e6335cc80b0f12e46a1e34bd85e983dd78a6e\"\u003e\u003ccode\u003e901e633\u003c/code\u003e\u003c/a\u003e Added \u003ccode\u003eSECURITY.md\u003c/code\u003e with EOL notice\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/5b36f2ac499a45905e246bc66bbee2858ef6556f\"\u003e\u003ccode\u003e5b36f2a\u003c/code\u003e\u003c/a\u003e Bump js-yaml from 4.1.1 to 4.2.0 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8598\"\u003e#8598\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/2d11e7bc92c59b86d6ac0da2e38044fb4befa6e0\"\u003e\u003ccode\u003e2d11e7b\u003c/code\u003e\u003c/a\u003e Bump form-data from 3.0.4 to 3.0.5 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8597\"\u003e#8597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/ae05a534a8c8e1c58eb6aa55d460d309bcfce22b\"\u003e\u003ccode\u003eae05a53\u003c/code\u003e\u003c/a\u003e Bump esbuild from 0.27.2 to 0.28.1 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8596\"\u003e#8596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/434af93166e5b90b78bba1295ca5a140fc67d0bc\"\u003e\u003ccode\u003e434af93\u003c/code\u003e\u003c/a\u003e Bump shell-quote from 1.7.3 to 1.8.4 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8593\"\u003e#8593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/4447cdadcbe8bc82570e9f1ae2b970f461b03b68\"\u003e\u003ccode\u003e4447cda\u003c/code\u003e\u003c/a\u003e Documentation (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8590\"\u003e#8590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/8f8d551c9c5296dfc2a5ede35047bfb491d66bc9\"\u003e\u003ccode\u003e8f8d551\u003c/code\u003e\u003c/a\u003e Updated copyright year (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8588\"\u003e#8588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/08d8514d491782b4ac46673bcfdedb2f6fc85f3d\"\u003e\u003ccode\u003e08d8514\u003c/code\u003e\u003c/a\u003e Bump fast-uri from 3.0.3 to 3.1.2 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8587\"\u003e#8587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.7.6...9.7.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 26.2 to 26.3\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.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a public \u003ccode\u003eVersionRange\u003c/code\u003e API and \u003ccode\u003eSpecifierSet.to_range()\u003c/code\u003e, representing the versions a specifier set accepts as an interval set that supports intersection, union, difference, complement, set relations, membership tests, and filtering. \u003ccode\u003eVersionRange.to_specifier_set()\u003c/code\u003e converts a range back to a \u003ccode\u003eSpecifierSet\u003c/code\u003e where a PEP 440 form exists. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1267\"\u003e#1267\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1270\"\u003e#1270\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 808: accept \u003ccode\u003eMetadata-Version: 2.6\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1194\"\u003e#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003elimit\u003c/code\u003e argument to \u003ccode\u003eparse_tag()\u003c/code\u003e for compressed tag sets. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eprefer_sdist_predicate\u003c/code\u003e argument to \u003ccode\u003ePylock.select()\u003c/code\u003e to prefer source distributions over wheels for selected packages. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1334\"\u003e#1334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003epure_python_tags()\u003c/code\u003e to generate the pure-Python tags for a Python version without touching the running platform. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_subset()\u003c/code\u003e, \u003ccode\u003eSpecifierSet.is_superset()\u003c/code\u003e, and \u003ccode\u003eSpecifierSet.is_disjoint()\u003c/code\u003e, which compare the versions two specifier sets accept. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1313\"\u003e#1313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBehavior adaptations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8; packaging now requires Python 3.9 or later. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1157\"\u003e#1157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer native \u003ccode\u003elinux_*\u003c/code\u003e platform tags over \u003ccode\u003emanylinux\u003c/code\u003e and \u003ccode\u003emusllinux\u003c/code\u003e tags on Linux. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/160\"\u003e#160\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for versions and specifiers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e instead of \u003ccode\u003eTypeError\u003c/code\u003e when \u003ccode\u003eVersion\u003c/code\u003e is given a non-string. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e for non-string pre-release letters passed to \u003ccode\u003eVersion.from_parts\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1241\"\u003e#1241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix an \u003ccode\u003eAttributeError\u003c/code\u003e when hashing internally trimmed versions. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e for post-release boundary intersections. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1257\"\u003e#1257\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for requirements and markers\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eRequirement.__hash__\u003c/code\u003e consistent with \u003ccode\u003e__eq__\u003c/code\u003e for trailing-zero-equivalent specifiers (e.g. \u003ccode\u003efoo==1.0.0\u003c/code\u003e and \u003ccode\u003efoo==1.0.0.0\u003c/code\u003e), so equal requirements hash equal and deduplicate in sets and dicts. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1232\"\u003e#1232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize requested extra names before comparing or hashing requirements. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/644\"\u003e#644\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve a \u003ccode\u003eRequirement\u003c/code\u003e's specifier \u003ccode\u003eprereleases\u003c/code\u003e override across a pickle round trip. (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1204\"\u003e#1204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidRequirement\u003c/code\u003e instead of \u003ccode\u003eInvalidSpecifier\u003c/code\u003e when a requirement contains an invalid specifier. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1332\"\u003e#1332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify the error for post-release prefix wildcards like \u003ccode\u003e==1.0.post1.*\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1299\"\u003e#1299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve quoting semantics when serializing marker values, so round-tripped markers parse back to the same marker. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1213\"\u003e#1213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKeep the parentheses of a nested group when serializing markers. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eextra\u003c/code\u003e and \u003ccode\u003edependency_groups\u003c/code\u003e values in nested markers at parse time. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1246\"\u003e#1246\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eUndefinedComparison\u003c/code\u003e when a set-valued variable like \u003ccode\u003eextras\u003c/code\u003e is used outside the membership form. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1265\"\u003e#1265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eUndefinedEnvironmentName\u003c/code\u003e (a \u003ccode\u003eKeyError\u003c/code\u003e subclass) for missing environment keys during marker evaluation. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1276\"\u003e#1276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWrap malformed string literal errors in \u003ccode\u003eInvalidMarker\u003c/code\u003e / \u003ccode\u003eInvalidRequirement\u003c/code\u003e instead of leaking a low-level error. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1249\"\u003e#1249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject requirements and markers with a trailing line break. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1345\"\u003e#1345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes for metadata and licenses\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCollect all \u003ccode\u003efrom_email\u003c/code\u003e validation errors into one \u003ccode\u003eExceptionGroup\u003c/code\u003e instead of raising the first. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1268\"\u003e#1268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept the UTF-8 charset case-insensitively in email payloads. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1330\"\u003e#1330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject malformed \u003ccode\u003eDescription-Content-Type\u003c/code\u003e values. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1329\"\u003e#1329\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't rewrite user values that contain \u003ccode\u003e{field}\u003c/code\u003e placeholders in error messages. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1327\"\u003e#1327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRoute multipart email payloads to \u003ccode\u003eunparsed\u003c/code\u003e instead of asserting. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eInvalidMetadata\u003c/code\u003e and \u003ccode\u003eCyclicDependencyGroup\u003c/code\u003e picklable. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1328\"\u003e#1328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFold every line boundary \u003ccode\u003estr.splitlines\u003c/code\u003e recognizes when writing a header with \u003ccode\u003eRFC822Message\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1356\"\u003e#1356\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.3 - 2026-08-03\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFeatures:\n\u003cul\u003e\n\u003cli\u003eAdd a public :class:\u003ccode\u003e~packaging.ranges.VersionRange\u003c/code\u003e API and\u003cbr /\u003e\n:meth:\u003ccode\u003eSpecifierSet.to_range() \u0026amp;lt;packaging.specifiers.SpecifierSet.to_range\u0026amp;gt;\u003c/code\u003e,\u003cbr /\u003e\nrepresenting the versions a specifier set accepts as an interval set that\u003cbr /\u003e\nsupports intersection, union, difference, complement, set relations,\u003cbr /\u003e\nmembership tests, and filtering.\u003cbr /\u003e\n:meth:\u003ccode\u003e~packaging.ranges.VersionRange.to_specifier_set\u003c/code\u003e converts a range back\u003cbr /\u003e\nto a :class:\u003ccode\u003e~packaging.specifiers.SpecifierSet\u003c/code\u003e where a PEP 440 form exists.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1267\u003c/code\u003e, :pull:\u003ccode\u003e1270\u003c/code\u003e, :pull:\u003ccode\u003e1298\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 808: accept \u003ccode\u003eMetadata-Version: 2.6\u003c/code\u003e. (:pull:\u003ccode\u003e1194\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003elimit\u003c/code\u003e argument to \u003ccode\u003eparse_tag()\u003c/code\u003e for compressed tag sets.\u003cbr /\u003e\n(:issue:\u003ccode\u003e1220\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eprefer_sdist_predicate\u003c/code\u003e argument to \u003ccode\u003ePylock.select()\u003c/code\u003e to prefer\u003cbr /\u003e\nsource distributions over wheels for selected packages. (:pull:\u003ccode\u003e1334\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd :func:\u003ccode\u003e~packaging.tags.pure_python_tags\u003c/code\u003e to generate the pure-Python\u003cbr /\u003e\ntags for a Python version without touching the running platform.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1346\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd :meth:\u003ccode\u003eSpecifierSet.is_subset() \u0026amp;lt;packaging.specifiers.SpecifierSet.is_subset\u0026amp;gt;\u003c/code\u003e, :meth:\u003ccode\u003e~packaging.specifiers.SpecifierSet.is_superset\u003c/code\u003e,\u003cbr /\u003e\nand :meth:\u003ccode\u003e~packaging.specifiers.SpecifierSet.is_disjoint\u003c/code\u003e, which compare the\u003cbr /\u003e\nversions two specifier sets accept. (:pull:\u003ccode\u003e1313\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8; packaging now requires Python 3.9 or later.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1157\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer native \u003ccode\u003elinux_*\u003c/code\u003e platform tags over \u003ccode\u003emanylinux\u003c/code\u003e and \u003ccode\u003emusllinux\u003c/code\u003e\u003cbr /\u003e\ntags on Linux. (:issue:\u003ccode\u003e160\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes for versions and specifiers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e instead of \u003ccode\u003eTypeError\u003c/code\u003e when \u003ccode\u003eVersion\u003c/code\u003e is given a\u003cbr /\u003e\nnon-string. (:pull:\u003ccode\u003e1319\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eInvalidVersion\u003c/code\u003e for non-string pre-release letters passed to\u003cbr /\u003e\n\u003ccode\u003eVersion.from_parts\u003c/code\u003e. (:pull:\u003ccode\u003e1241\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix an \u003ccode\u003eAttributeError\u003c/code\u003e when hashing internally trimmed versions.\u003cbr /\u003e\n(:pull:\u003ccode\u003e1242\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e for post-release boundary\u003cbr /\u003e\nintersections. (:pull:\u003ccode\u003e1257\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes for requirements and markers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eRequirement.__hash__\u003c/code\u003e consistent with \u003ccode\u003e__eq__\u003c/code\u003e for\u003cbr /\u003e\ntrailing-zero-equivalent specifiers (e.g. \u003ccode\u003efoo==1.0.0\u003c/code\u003e and\u003cbr /\u003e\n\u003ccode\u003efoo==1.0.0.0\u003c/code\u003e), so equal requirements hash equal and deduplicate in\u003cbr /\u003e\nsets and dicts. (:pull:\u003ccode\u003e1232\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/929fd4b1410ac7ef61ef3f45b2f5d7e87711a9b5\"\u003e\u003ccode\u003e929fd4b\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f300ebf0c155e1f7ea6d62fba11dba4bac3d1944\"\u003e\u003ccode\u003ef300ebf\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pre-commit group with 5 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/f91d97566a966177ad7ea5a7c703b12a7273e3b1\"\u003e\u003ccode\u003ef91d975\u003c/code\u003e\u003c/a\u003e ci(downstream): bump hatchling to 1.31.0 and fix its pytest rootdir (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/b1a7124fe3d40c3302c029e9eb01ac3fc3496a54\"\u003e\u003ccode\u003eb1a7124\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 7 updates (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/2d873eb6002021a8c007c933fbdab58b37a5079b\"\u003e\u003ccode\u003e2d873eb\u003c/code\u003e\u003c/a\u003e fix(metadata): fold every line boundary when writing headers (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1356\"\u003e#1356\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/413d006fadf5b9b14d78ad444201d8189bff8c64\"\u003e\u003ccode\u003e413d006\u003c/code\u003e\u003c/a\u003e docs: changelog for 26.3 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1343\"\u003e#1343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4eb0753dba8fcaaac8eb75463374e448f0931558\"\u003e\u003ccode\u003e4eb0753\u003c/code\u003e\u003c/a\u003e docs(metadata): explain selective field validation (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1342\"\u003e#1342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/77e9ed42b6db9c5c011a5148047a356ebe42692a\"\u003e\u003ccode\u003e77e9ed4\u003c/code\u003e\u003c/a\u003e feat(tags): add pure Python tag generator (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1346\"\u003e#1346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/7cea5e88671ed14016e9ab3dd08eab064f596564\"\u003e\u003ccode\u003e7cea5e8\u003c/code\u003e\u003c/a\u003e ci: drop 3.13t on Windows (3.13.14t may fail to build, run takes 9 minutes) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/45a8b3402db5ff82158f2d0eabaf8447aa7a50bf\"\u003e\u003ccode\u003e45a8b34\u003c/code\u003e\u003c/a\u003e docs: add missing versionadded/versionchanged directives (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1344\"\u003e#1344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/26.2...26.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.2.0 to 12.3.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.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove non-image ImageCms modes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9697\"\u003e#9697\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\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd release notes for SBOM and performance improvements \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\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 security release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9741\"\u003e#9741\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 release notes for Python 3.15 beta wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9696\"\u003e#9696\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eImageFont can also be used with ImageText \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9597\"\u003e#9597\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdditional guidelines for security reports \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9659\"\u003e#9659\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFixed typo \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9636\"\u003e#9636\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9591\"\u003e#9591\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRevise development support information in README \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9583\"\u003e#9583\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 INCIDENT_RESPONSE.md \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9555\"\u003e#9555\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 STRIDE threat model to security docs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9562\"\u003e#9562\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 CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9556\"\u003e#9556\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 README with revised security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9553\"\u003e#9553\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 security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9552\"\u003e#9552\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9534\"\u003e#9534\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\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issue...\n\n_Description has been truncated_","html_url":"https://github.com/miniscruff/scopie/pull/152","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/miniscruff%2Fscopie/issues/152","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/152/packages"}},{"old_version":"2.9.0","new_version":"2.9.1","update_type":"patch","path":null,"pr_created_at":"2026-09-11T16:39:06.000Z","version_change":"2.9.0 → 2.9.1","issue":{"uuid":"5426756788","node_id":"PR_kwDOQwz7ZM8AAAABDLEIaw","number":5212,"state":"closed","title":"chore(deps): bump the python-minor-patch group with 2 updates","user":"dependabot[bot]","labels":["loom:pr","tier:maintenance","dependencies"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2026-09-11T20:32:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-11T16:39:06.000Z","updated_at":"2026-09-11T20:32:28.000Z","time_to_close":14000,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":2,"packages":[{"name":"cairosvg","old_version":"2.9.0","new_version":"2.9.1","repository_url":"https://github.com/Kozea/CairoSVG"},{"name":"ruff","old_version":"0.16.5","new_version":"0.16.6","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 2 updates: [cairosvg](https://github.com/Kozea/CairoSVG) and [ruff](https://github.com/astral-sh/ruff).\n\nUpdates `cairosvg` 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING\u003c/strong\u003e: this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.1 released on 2026-09-07\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eSpecially crafted SVGs with very long paths could lead to exponential rendering times.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003eFix support of Windows paths\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/Kozea/CairoSVG/commit/3b7a250c9e955db9c3cdf525d5b5027a9a396201\"\u003e\u003ccode\u003e3b7a250\u003c/code\u003e\u003c/a\u003e Version 2.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9d63f049f9988d0ddda3eb94564ac3a50a286523\"\u003e\u003ccode\u003e9d63f04\u003c/code\u003e\u003c/a\u003e Use a regex-based tokenizer for paths to avoid quadratic compexity\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a4d585eb374724b79676e9cceaa9e9a1a4358565\"\u003e\u003ccode\u003ea4d585e\u003c/code\u003e\u003c/a\u003e Don’t use O(n) list.pop(0) for vertices, use O(1) deque.popleft()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/026fbceed208f93d8c313a83490bf8106effe4ff\"\u003e\u003ccode\u003e026fbce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/449\"\u003e#449\u003c/a\u003e from SAY-5/feat/url-pathlike\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6eaa366c765a363ddc8a505e7e55e2c65d9d8d40\"\u003e\u003ccode\u003e6eaa366\u003c/code\u003e\u003c/a\u003e feat(url): accept path-like objects for the url parameter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/0613641fda46cae8bb1a77b90f0c9bbf2e56094f\"\u003e\u003ccode\u003e0613641\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/50fdfe8cf163da1ac92b7b1a9e86ba35349ca144\"\u003e\u003ccode\u003e50fdfe8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/447\"\u003e#447\u003c/a\u003e from BudongJW/fix/resub-positional-flags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/278c22767af5156a549bdb549e55888e03ecbb74\"\u003e\u003ccode\u003e278c227\u003c/code\u003e\u003c/a\u003e Fix re.sub positional argument in nt_compatible_path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6075040bbc69365a5329e175f2574f1ae8c029c1\"\u003e\u003ccode\u003e6075040\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/babf3df699f3d2edff98b7575e0e27c06bb766ae\"\u003e\u003ccode\u003ebabf3df\u003c/code\u003e\u003c/a\u003e Fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.9.0...2.9.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.16.5 to 0.16.6\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.16.6\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\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-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\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/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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.16.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\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-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\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/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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/22f65a2ab5052990503985c7c794de37598d531e\"\u003e\u003ccode\u003e22f65a2\u003c/code\u003e\u003c/a\u003e Bump 0.16.6 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28280\"\u003e#28280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7cc9f1ed53e5ce175f17fde3a75fe792ac41e8cd\"\u003e\u003ccode\u003e7cc9f1e\u003c/code\u003e\u003c/a\u003e [ty] Document \u003ccode\u003eCallableTypeKind\u003c/code\u003e variants (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28277\"\u003e#28277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/056ce07a895c217dab7929a616540c246cf8a078\"\u003e\u003ccode\u003e056ce07\u003c/code\u003e\u003c/a\u003e Add UV_LOCKED to all workflows (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28261\"\u003e#28261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6d6e35d03a72d23d3b0f23fb348692b03c9b81b6\"\u003e\u003ccode\u003e6d6e35d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80b4891b64cb916dce080e8fa15af5c2179d776a\"\u003e\u003ccode\u003e80b4891\u003c/code\u003e\u003c/a\u003e [ty] Temporarily disable tuple types in property tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28275\"\u003e#28275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3f7a54d1d7b9480a18d86a8211bf676354a2f8a0\"\u003e\u003ccode\u003e3f7a54d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/35656cf37d34f30116d4f4a9cb13853a6ad9fd0d\"\u003e\u003ccode\u003e35656cf\u003c/code\u003e\u003c/a\u003e [ty] Preserve deprecations on decorated callables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28256\"\u003e#28256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d2626c866ee08495cfa0da5236e130030d37e0cf\"\u003e\u003ccode\u003ed2626c8\u003c/code\u003e\u003c/a\u003e [ty] Reject missing attributes on \u003ccode\u003etype[]\u003c/code\u003e aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28267\"\u003e#28267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ee6a6d19aa0707df942febe9768488d39f383c8c\"\u003e\u003ccode\u003eee6a6d1\u003c/code\u003e\u003c/a\u003e [ty] Support ParamSpecs in \u003ccode\u003eConstraintSet\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28028\"\u003e#28028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f6a170080dab08f754ef086369a2623c70f753d\"\u003e\u003ccode\u003e7f6a170\u003c/code\u003e\u003c/a\u003e [ty] Move bound APIs to constraint owners (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28094\"\u003e#28094\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.5...0.16.6\"\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/rjwalters/kicad-tools/pull/5212","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rjwalters%2Fkicad-tools/issues/5212","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5212/packages"}},{"old_version":"\u003e=2.7","new_version":"\u003e=2.9.0","update_type":null,"path":null,"pr_created_at":"2026-05-01T07:32:08.000Z","version_change":"\u003e=2.7 → \u003e=2.9.0","issue":{"uuid":"4363383155","node_id":"PR_kwDORvyigs7XXkaA","number":12,"state":"open","title":"deps: update cairosvg requirement from \u003e=2.7 to \u003e=2.9.0","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-01T07:32:08.000Z","updated_at":"2026-05-01T07:32:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: update","packages":[{"name":"cairosvg","old_version":"\u003e=2.7","new_version":"\u003e=2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [cairosvg](https://github.com/Kozea/CairoSVG) 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/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with relatively small inputs.\nCairoSVG now stops rendering when more than 100k use tags are rendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.7.1 released on 2023-08-05\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDon’t draw clipPath when defined after reference\u003c/li\u003e\n\u003cli\u003eHandle evenodd fill rule with gradients and patterns\u003c/li\u003e\n\u003cli\u003eFix ratio and clip for \u0026quot;image\u0026quot; tags with no size\u003c/li\u003e\n\u003cli\u003eHandle data-URLs in safe mode\u003c/li\u003e\n\u003cli\u003eUse f-strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 2.7.0 released on 2023-03-20\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.0...2.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/toalba/wows-renderer/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/toalba%2Fwows-renderer/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"2.7.1","new_version":"2.9.0","update_type":"minor","path":null,"pr_created_at":"2026-04-26T17:11:26.000Z","version_change":"2.7.1 → 2.9.0","issue":{"uuid":"4331467456","node_id":"PR_kwDOQke9fs7Vvxgp","number":2,"state":"closed","title":"Chore(deps): Bump cairosvg from 2.7.1 to 2.9.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-26T18:25:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-26T17:11:26.000Z","updated_at":"2026-04-26T18:25:48.000Z","time_to_close":4460,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.7.1 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with relatively small inputs.\nCairoSVG now stops rendering when more than 100k use tags are rendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/bvolpato/homepage-fork/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/bvolpato/homepage-fork/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvolpato%2Fhomepage-fork/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"}},{"old_version":"2.8.2","new_version":"2.9.0","update_type":"minor","path":null,"pr_created_at":"2026-03-30T13:27:21.000Z","version_change":"2.8.2 → 2.9.0","issue":{"uuid":"4170747933","node_id":"PR_kwDOQ3AX587Onzf5","number":323,"state":"open","title":"chore(deps)(deps-dev): bump the dev-dependencies group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["automated","dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-30T13:27:21.000Z","updated_at":"2026-04-06T12:51:15.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps-dev): bump","group_name":"dev-dependencies","update_count":11,"packages":[{"name":"ty","old_version":"0.0.18","new_version":"0.0.24","repository_url":"https://github.com/astral-sh/ty"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.7","repository_url":"https://github.com/astral-sh/ruff"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"arize-phoenix-client","old_version":"1.29.0","new_version":"2.1.0","repository_url":"https://github.com/Arize-ai/phoenix"},{"name":"mkdocs-material","old_version":"9.7.2","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-gen-files","old_version":"0.6.0","new_version":"0.6.1","repository_url":"https://github.com/oprypin/mkdocs-gen-files"},{"name":"mkdocs-literate-nav","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/oprypin/mkdocs-literate-nav"},{"name":"mkdocs-section-index","old_version":"0.3.10","new_version":"0.3.11","repository_url":"https://github.com/oprypin/mkdocs-section-index"},{"name":"cairosvg","old_version":"2.8.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"},{"name":"gepa","old_version":"0.1.0","new_version":"0.1.1","repository_url":"https://github.com/gepa-ai/gepa"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev-dependencies group with 11 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ty](https://github.com/astral-sh/ty) | `0.0.18` | `0.0.24` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.4` | `0.15.7` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [arize-phoenix-client](https://github.com/Arize-ai/phoenix) | `1.29.0` | `2.1.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.2` | `9.7.6` |\n| [mkdocs-gen-files](https://github.com/oprypin/mkdocs-gen-files) | `0.6.0` | `0.6.1` |\n| [mkdocs-literate-nav](https://github.com/oprypin/mkdocs-literate-nav) | `0.6.2` | `0.6.3` |\n| [mkdocs-section-index](https://github.com/oprypin/mkdocs-section-index) | `0.3.10` | `0.3.11` |\n| [cairosvg](https://github.com/Kozea/CairoSVG) | `2.8.2` | `2.9.0` |\n| [gepa](https://github.com/gepa-ai/gepa) | `0.1.0` | `0.1.1` |\n\n\nUpdates `ty` from 0.0.18 to 0.0.24\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.24\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure \u003ccode\u003eTypedDict\u003c/code\u003e subscripts for unknown keys return \u003ccode\u003eUnknown\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23926\"\u003e#23926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix overflow with recursive \u003ccode\u003eTypeIs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23784\"\u003e#23784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix variance of frozen dataclass-transform models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23931\"\u003e#23931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove \u003ca href=\"https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_semanticTokens\"\u003esemantic token\u003c/a\u003e classification for attribute access on union types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23841\"\u003e#23841\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and correctness by avoiding inferring intersection types for call arguments as a result of bidirectional inference (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow keyword arguments when unpacking dictionary instances (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23436\"\u003e#23436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDiscover \u003ccode\u003e/usr/local/lib\u003c/code\u003e dist-packages on Debian/Ubuntu (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23797\"\u003e#23797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23963\"\u003e#23963\u003c/a\u003e). \u003ca href=\"https://github.com/python/typeshed/compare/fa659b1def704dea3dc8e25c7857b23eac69df4d...f8f0794d0fe249c06dc9f31a004d85be6cca6ced\"\u003eTypeshed diff\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ty 0.0.24\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/ty/releases/download/0.0.24/ty-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/ty/releases/download/0.0.24/ty-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ty 0.0.24\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/ty/releases/download/0.0.24/ty-aarch64-apple-darwin.tar.gz\"\u003ety-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/ty/releases/download/0.0.24/ty-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/ty/releases/download/0.0.24/ty-x86_64-apple-darwin.tar.gz\"\u003ety-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/ty/releases/download/0.0.24/ty-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/ty/releases/download/0.0.24/ty-aarch64-pc-windows-msvc.zip\"\u003ety-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/ty/releases/download/0.0.24/ty-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/ty/releases/download/0.0.24/ty-i686-pc-windows-msvc.zip\"\u003ety-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/ty/releases/download/0.0.24/ty-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://releases.astral.sh/github/ty/releases/download/0.0.24/ty-x86_64-pc-windows-msvc.zip\"\u003ety-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://releases.astral.sh/github/ty/releases/download/0.0.24/ty-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://releases.astral.sh/github/ty/releases/download/0.0.24/ty-aarch64-unknown-linux-gnu.tar.gz\"\u003ety-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://releases.astral.sh/github/ty/releases/download/0.0.24/ty-aarch64-unknown-linux-gnu.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/ty/releases/download/0.0.24/ty-i686-unknown-linux-gnu.tar.gz\"\u003ety-i686-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ex86 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ty/releases/download/0.0.24/ty-i686-unknown-linux-gnu.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/ty/releases/download/0.0.24/ty-powerpc64-unknown-linux-gnu.tar.gz\"\u003ety-powerpc64-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePPC64 Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ty/releases/download/0.0.24/ty-powerpc64-unknown-linux-gnu.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/ty/releases/download/0.0.24/ty-powerpc64le-unknown-linux-gnu.tar.gz\"\u003ety-powerpc64le-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003ePPC64LE Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ty/releases/download/0.0.24/ty-powerpc64le-unknown-linux-gnu.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/ty/releases/download/0.0.24/ty-s390x-unknown-linux-gnu.tar.gz\"\u003ety-s390x-unknown-linux-gnu.tar.gz\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eS390x Linux\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"https://releases.astral.sh/github/ty/releases/download/0.0.24/ty-s390x-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/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.24\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure \u003ccode\u003eTypedDict\u003c/code\u003e subscripts for unknown keys return \u003ccode\u003eUnknown\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23926\"\u003e#23926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix overflow with recursive \u003ccode\u003eTypeIs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23784\"\u003e#23784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix variance of frozen dataclass-transform models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23931\"\u003e#23931\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove \u003ca href=\"https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_semanticTokens\"\u003esemantic token\u003c/a\u003e classification for attribute access on union types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23841\"\u003e#23841\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance and correctness by avoiding inferring intersection types for call arguments as a result of bidirectional inference (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow keyword arguments when unpacking dictionary instances (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23436\"\u003e#23436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDiscover \u003ccode\u003e/usr/local/lib\u003c/code\u003e dist-packages on Debian/Ubuntu (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23797\"\u003e#23797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSync vendored typeshed stubs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23963\"\u003e#23963\u003c/a\u003e). \u003ca href=\"https://github.com/python/typeshed/compare/fa659b1def704dea3dc8e25c7857b23eac69df4d...f8f0794d0fe249c06dc9f31a004d85be6cca6ced\"\u003eTypeshed diff\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce fast path for protocol non-assignability (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23952\"\u003e#23952\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved generic-solver performance in cases involving overload sets (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23881\"\u003e#23881\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/Geo5\"\u003e\u003ccode\u003e@​Geo5\u003c/code\u003e\u003c/a\u003e\u003c/li\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/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dcreager\"\u003e\u003ccode\u003e@​dcreager\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ollema\"\u003e\u003ccode\u003e@​ollema\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\u003ch2\u003e0.0.23\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-13.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix false-positive diagnostics for PEP-604 union annotations on attribute targets on Python 3.9 when \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e is active (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23915\"\u003e#23915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edataclass_transform\u003c/code\u003e: Respect \u003ccode\u003ekw_only\u003c/code\u003e overwrites in dataclasses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23930\"\u003e#23930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix too-many-cycle panics when inferring loop variables with \u003ccode\u003eLiteral\u003c/code\u003e types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23875\"\u003e#23875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_foldingRange\"\u003efolding range\u003c/a\u003e classification of lines starting with \u003ccode\u003e#\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23831\"\u003e#23831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_foldingRange\"\u003efolding ranges\u003c/a\u003e for notebooks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23830\"\u003e#23830\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/876233049afc2530181f5b8af390c6d57c65bb80\"\u003e\u003ccode\u003e8762330\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.24 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/a6f24e14c0d41b17b44ea514b230a25bad411b65\"\u003e\u003ccode\u003ea6f24e1\u003c/code\u003e\u003c/a\u003e Update prek dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3045\"\u003e#3045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/95150e7634e4b863223cea12e96f48baa23625d3\"\u003e\u003ccode\u003e95150e7\u003c/code\u003e\u003c/a\u003e Typing FAQ: New entry explaining invariance (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3073\"\u003e#3073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/bc9e8a839385b3ee5a45d3df6e5f79885dcad17d\"\u003e\u003ccode\u003ebc9e8a8\u003c/code\u003e\u003c/a\u003e Remove the repository code of conduct in favor of the organization one (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/3d12b2e9f81cd98ccc27f0285f8056da9bb999d5\"\u003e\u003ccode\u003e3d12b2e\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v7.6.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3054\"\u003e#3054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/64fe9c2fd1610cc6b25b1dfda0a8bb7694fc9467\"\u003e\u003ccode\u003e64fe9c2\u003c/code\u003e\u003c/a\u003e Update actions/attest-build-provenance action to v4 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3046\"\u003e#3046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/86d05eb2a7da77605d42ad86a5adbde131431047\"\u003e\u003ccode\u003e86d05eb\u003c/code\u003e\u003c/a\u003e Update docker/setup-buildx-action action to v4 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/eb3f320a525075daa431a0ed19d5cbff12dc5c2b\"\u003e\u003ccode\u003eeb3f320\u003c/code\u003e\u003c/a\u003e Update docker/metadata-action action to v6 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3049\"\u003e#3049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/7da93b86f69724734cfa4a90d3df3ca3b44bc4e4\"\u003e\u003ccode\u003e7da93b8\u003c/code\u003e\u003c/a\u003e Update docker/login-action action to v4 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/fa4db72937dacb89a6271327a7433b01322136f2\"\u003e\u003ccode\u003efa4db72\u003c/code\u003e\u003c/a\u003e Update docker/build-push-action action to v7 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ty/compare/0.0.18...0.0.24\"\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.4 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\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/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\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.7/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.7/ruff-installer.ps1 | iex\u0026quot;\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\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/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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 `arize-phoenix-client` from 1.29.0 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Arize-ai/phoenix/releases\"\u003earize-phoenix-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003earize-phoenix-client: v2.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v2.0.1...arize-phoenix-client-v2.1.0\"\u003e2.1.0\u003c/a\u003e (2026-03-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add span filter params to getSpans (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12203\"\u003e#12203\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/91949d7aa63acff7110ec79518d9ad9ce711e277\"\u003e91949d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003earize-phoenix-client: v2.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v2.0.0...arize-phoenix-client-v2.0.1\"\u003e2.0.1\u003c/a\u003e (2026-03-14)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add server version gating with capability requirements (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12122\"\u003e#12122\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/9769f906ae0caef8e19f88e25e0ea545ee399d72\"\u003e9769f90\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003earize-phoenix-client: v2.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v1.31.0...arize-phoenix-client-v2.0.0\"\u003e2.0.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e \u003ccode\u003eclient.annotations\u003c/code\u003e has been removed. Use \u003ccode\u003eclient.spans\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Cerebras, Fireworks, Groq, and Moonshot as first-class providers (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11938\"\u003e#11938\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/df94203fa621bae9928d96249382380aa4be5443\"\u003edf94203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd Perplexity and Together AI as built-in providers in the playground (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11952\"\u003e#11952\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/aeefe1970405c7fcb48254dce92dcfc1824fcaa3\"\u003eaeefe19\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd trace_ids parameter to client getSpans methods (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11945\"\u003e#11945\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/6d896e32ce1d4ed2038342ae67d678de2163e8f0\"\u003e6d896e3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add session conversation API to Python and TypeScript clients (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11974\"\u003e#11974\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/83b7f68782b4994a741244c478d5d561e4817bcb\"\u003e83b7f68\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e propagate parent_id filter to JS and Python clients (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11975\"\u003e#11975\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/d951320f704545a516ccd63d2acbc88a35685491\"\u003ed951320\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e remove deprecated \u003ccode\u003eclient.annotations\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11983\"\u003e#11983\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/6203c31fc59579dfbe927d47ca0d03d162d7fb77\"\u003e6203c31\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eserver:\u003c/strong\u003e add DELETE session API  (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11976\"\u003e#11976\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/d4a865ae6bc1511b2b433b408de2f75bf71abc7b\"\u003ed4a865a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003earize-phoenix-client: v1.31.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v1.30.0...arize-phoenix-client-v1.31.0\"\u003e1.31.0\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add session retrieval methods to Python client SDK (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11879\"\u003e#11879\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/3669813c7486b128d8858de6ef1cffa3e8d5c020\"\u003e3669813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add timeout and list_sessions alias to sessions API (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11897\"\u003e#11897\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/a4befc0f6bfe3a0641eca58eb2f35226ec54f4d6\"\u003ea4befc0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003earize-phoenix-client: v1.30.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v1.29.1...arize-phoenix-client-v1.30.0\"\u003e1.30.0\u003c/a\u003e (2026-03-02)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd GET endpoints for sessions REST API (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11724\"\u003e#11724\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/2a1f14846cec30bb9b892114f3510e740154bcc0\"\u003e2a1f148\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/Arize-ai/phoenix/blob/main/CHANGELOG.md\"\u003earize-phoenix-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-v12.0.0...arize-phoenix-v12.1.0\"\u003e12.1.0\u003c/a\u003e (2025-09-30)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ecomponents:\u003c/strong\u003e switch (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9678\"\u003e#9678\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/ac061b5b73f8a608f50415be73c287e8b427d6f3\"\u003eac061b5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edataset label graphql(create, delete, read) (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9702\"\u003e#9702\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/f52744dd1e6fbe3eb3742457241246f849dfe9b9\"\u003ef52744d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emigrate from bitnami chart to groundhog2k (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9583\"\u003e#9583\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/f3be6317c960a66916de568dea98dcf914521221\"\u003ef3be631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Claude Sonnet 4.5 (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9700\"\u003e#9700\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/2056f906938b5894b22cecaaaeaf79dec7712d02\"\u003e2056f90\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emissing root path for logout (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9707\"\u003e#9707\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/e14f4f6dd33472a048a19df26881d8184822388f\"\u003ee14f4f6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eplayground:\u003c/strong\u003e ensure playground dataset examples load when first switching to dataset mode (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9710\"\u003e#9710\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/452b06088af30ba6e09458ffa265e3e1bb082eeb\"\u003e452b060\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-v11.38.0...arize-phoenix-v12.0.0\"\u003e12.0.0\u003c/a\u003e (2025-09-29)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eversion 12 (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9695\"\u003e#9695\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd annotation columns to sessions table (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9551\"\u003e#9551\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/212513dce2cdfcff5411ddd9dc350da0b131e21f\"\u003e212513d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd db table and graphql mutations for session annotations (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/8993\"\u003e#8993\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/092c067616477888e571635bcb575c6f97baf6e2\"\u003e092c067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd junction table for taking snapshots of examples when inserting an experiment (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9609\"\u003e#9609\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/f5714416052560e96182d01e23286032de575cb1\"\u003ef571441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd user_id on datasets and dataset_versions table (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9650\"\u003e#9650\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/0230f8f38a7a1cb5ba91b7035d411d885fffa97b\"\u003e0230f8f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAssign examples to dataset splits (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9606\"\u003e#9606\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/ec3f6fd5044b3e3fae1f04b5e56f5cc9d2692560\"\u003eec3f6fd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclient methods for adding trace and session annotations (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9369\"\u003e#9369\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/e9b29ef0b50eb30c64d7e3c557d6264d5652d3fc\"\u003ee9b29ef\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edataset labels migration (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9409\"\u003e#9409\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/77011436e85f7ad35e2e4d032d248d1a4ad72be4\"\u003e7701143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edataset split and examples migration (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9360\"\u003e#9360\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/045f8a13b0fdc3af030d176939624e35add3f78f\"\u003e045f8a1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDataset Splits Add Dialog UI (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9601\"\u003e#9601\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/914cf640409936d378b6b9b959573b5858017ac5\"\u003e914cf64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edataset splits backend (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9490\"\u003e#9490\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/dc45cd2f44f506592cbd98d89b38e044d5447026\"\u003edc45cd2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edb:\u003c/strong\u003e add row for viewer role (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9648\"\u003e#9648\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/efbbf521c9b503bfa188eecef0228a1eb56c2d60\"\u003eefbbf52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edisplay splits on examples table (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9602\"\u003e#9602\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/694d1e088d59c2aada71a822e2ae468aa3373047\"\u003e694d1e0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExperiment migration (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9279\"\u003e#9279\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/7151cd5c0e4234461f6a6c8bb5069a16565c47e2\"\u003e7151cd5\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eexperiment-tags on experiment and datasets (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9406\"\u003e#9406\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/5afe0dc9c3c7cf0bd86a18e0513553ec22654db8\"\u003e5afe0dc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eexperiments:\u003c/strong\u003e show repetitions in the table (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9669\"\u003e#9669\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/dfb05cbf8beff4820bd8bd173ba5a2429db7137d\"\u003edfb05cb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epin the minimum version of the client (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9666\"\u003e#9666\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/54ffb45923c3e24491f3f08ed935ca3e61b6f254\"\u003e54ffb45\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePlayground migration experiments record user_id (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9292\"\u003e#9292\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/3b0ca07da1e963c766b7612099a353fbc505c05a\"\u003e3b0ca07\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate to google genai sdk (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9591\"\u003e#9591\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/b50e82a0ff20cc83a380125b38e7d783e84effcc\"\u003eb50e82a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse composite primary key for crosswalk tables (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9636\"\u003e#9636\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/cc0eac1dd8df2a6323e2022dbd74ab674f992aea\"\u003ecc0eac1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eversion 12 (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9695\"\u003e#9695\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/8529fe31f7ef431c7074a838ce08285800058805\"\u003e8529fe3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd big int indexes and user id indexes (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/9693\"\u003e#9693\u003c/a\u003e) (\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/7c3393692939a5981881fd6036efc032cf53f642\"\u003e7c33936\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/Arize-ai/phoenix/commit/ffcfaaef0a0d42b8142a6ada7b74a1151780c3e8\"\u003e\u003ccode\u003effcfaae\u003c/code\u003e\u003c/a\u003e chore(main): release arize-phoenix-client 2.1.0 (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12205\"\u003e#12205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/7507b49283ca1838a8d6cd4132749ad28cfef89c\"\u003e\u003ccode\u003e7507b49\u003c/code\u003e\u003c/a\u003e chore(js): update versions (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12204\"\u003e#12204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/91949d7aa63acff7110ec79518d9ad9ce711e277\"\u003e\u003ccode\u003e91949d7\u003c/code\u003e\u003c/a\u003e feat(client): add span filter params to getSpans (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12203\"\u003e#12203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/c32665a82df905ac564eb7a58e271311ae3cc511\"\u003e\u003ccode\u003ec32665a\u003c/code\u003e\u003c/a\u003e refactor: remove light darker tokens (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12182\"\u003e#12182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/42a7a1b2920580f4dbd3182df88575b277fe2b02\"\u003e\u003ccode\u003e42a7a1b\u003c/code\u003e\u003c/a\u003e feat(onboarding): add Python integration snippets (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12197\"\u003e#12197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/6d4e8d7e863291cc60ceca7704d5588ddbfdead1\"\u003e\u003ccode\u003e6d4e8d7\u003c/code\u003e\u003c/a\u003e feat: Add TypeScript onboarding snippets for LangChain, OpenAI, Anthropic, an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/565041c17d5a2027fe796d2f84c44e39af0948a3\"\u003e\u003ccode\u003e565041c\u003c/code\u003e\u003c/a\u003e docs: refine llms.txt: expand coverage, drop integrations, optimize concisene...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/35891a26f7ad8f747c3f03ae3999e954b252ce9f\"\u003e\u003ccode\u003e35891a2\u003c/code\u003e\u003c/a\u003e chore(js): update versions (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12190\"\u003e#12190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/c8e618770c46c9ec350ade8669da28a584f951a8\"\u003e\u003ccode\u003ec8e6187\u003c/code\u003e\u003c/a\u003e chore(ui): enable jsx-a11y plugin and fix storybook violations (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/11684\"\u003e#11684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Arize-ai/phoenix/commit/d320b93eb23410505a02cebea68925c1c712612a\"\u003e\u003ccode\u003ed320b93\u003c/code\u003e\u003c/a\u003e fix: migrate llms.txt to standard llmstxt.org format (\u003ca href=\"https://redirect.github.com/Arize-ai/phoenix/issues/12189\"\u003e#12189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Arize-ai/phoenix/compare/arize-phoenix-client-v1.29.0...arize-phoenix-client-v2.1.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.7.2 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/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/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.7.2...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-gen-files` from 0.6.0 to 0.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/releases\"\u003emkdocs-gen-files's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/pull/42\"\u003eoprypin/mkdocs-gen-files#42\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.1\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/05c38bb46caa8d6550da54e291bddc59c4610d07\"\u003e\u003ccode\u003e05c38bb\u003c/code\u003e\u003c/a\u003e v0.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/d2850806e39047a7ad4ca7c415adb56d3a26b2cc\"\u003e\u003ccode\u003ed285080\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/issues/42\"\u003e#42\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/dcc896d45a2c31ddbf8c78317020647631ba38cd\"\u003e\u003ccode\u003edcc896d\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-literate-nav` from 0.6.2 to 0.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/releases\"\u003emkdocs-literate-nav's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/pull/39\"\u003eoprypin/mkdocs-literate-nav#39\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\u003ehttps://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/b91268c263f61e38a7e27f77ccf38ec287e0c0b5\"\u003e\u003ccode\u003eb91268c\u003c/code\u003e\u003c/a\u003e v0.6.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/cee9ec49a1523036081378a39bda9fa014432526\"\u003e\u003ccode\u003ecee9ec4\u003c/code\u003e\u003c/a\u003e Exclude properdocs when testing minimal dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/ea523f5864f59fb7939f84cd4400df67280ad52c\"\u003e\u003ccode\u003eea523f5\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/issues/39\"\u003e#39\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/258b15a15a3e25cedc816d0a5a971acfdb86541e\"\u003e\u003ccode\u003e258b15a\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-section-index` from 0.3.10 to 0.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/releases\"\u003emkdocs-section-index's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/pull/27\"\u003eoprypin/mkdocs-section-index#27\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ehttps://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/a8235f6f8eb5927b966a3aaea8afe5fa161ecece\"\u003e\u003ccode\u003ea8235f6\u003c/code\u003e\u003c/a\u003e v0.3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/ac66dfda53834d79ce8e0af6f340dddd7cde2bf9\"\u003e\u003ccode\u003eac66dfd\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/issues/27\"\u003e#27\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/32866cd83993ee3eefbac0fcc13911692796d8f6\"\u003e\u003ccode\u003e32866cd\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cairosvg` from 2.8.2 to 2.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with relatively small inputs.\nCairoSVG now stops rendering when more than 100k use tags are rendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.8.2...2.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gepa` from 0.1.0 to 0.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gepa-ai/gepa/releases\"\u003egepa's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.1.1\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eCandidate Tree Visualization\u003c/strong\u003e — GEPA now generates an interactive HTML lineage tree of all candidates explored during optimization. Nodes are color-coded by role (best, Pareto front, seed) with hover previews and click-to-pin tooltips for reading full prompt text. The tree is...\n\n_Description has been truncated_","html_url":"https://github.com/Alberto-Codes/gepa-adk/pull/323","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Alberto-Codes%2Fgepa-adk/issues/323","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/323/packages"}},{"old_version":"2.5.2","new_version":"2.9.0","update_type":"minor","path":"/examples","pr_created_at":"2026-03-18T10:17:35.000Z","version_change":"2.5.2 → 2.9.0","issue":{"uuid":"4094133703","node_id":"PR_kwDOJKxOys7Lfe9y","number":49,"state":"open","title":"build(deps): bump cairosvg from 2.5.2 to 2.9.0 in /examples","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-03-18T10:17:35.000Z","updated_at":"2026-03-18T10:17:41.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"cairosvg","old_version":"2.5.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":"/examples","ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.5.2 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.9.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with relatively small inputs.\nCairoSVG now stops rendering when more than 100k use tags are rendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDon’t draw clipPath when defined after reference\u003c/li\u003e\n\u003cli\u003eHandle evenodd fill rule with gradients and patterns\u003c/li\u003e\n\u003cli\u003eFix ratio and clip for \u0026quot;image\u0026quot; tags with no size\u003c/li\u003e\n\u003cli\u003eHandle data-URLs in safe mode\u003c/li\u003e\n\u003cli\u003eUse f-strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eWhen processing SVG files, CairoSVG could access other files online, possibly leading to very long renderings or other security problems.\u003c/p\u003e\n\u003cp\u003eThis feature is now disabled by default. External resources can still be accessed using the \u0026quot;unsafe\u0026quot; or the \u0026quot;url_fetcher\u0026quot; parameter.\u003c/p\u003e\n\u003ch2\u003e2.6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.5 and 3.6, add support of Python 3.9, 3.10 and 3.11\u003c/li\u003e\n\u003cli\u003eSupport crispEdges value for text antialiasing\u003c/li\u003e\n\u003cli\u003eDon’t crash when including CMYK images\u003c/li\u003e\n\u003cli\u003eOnly update docstrings when not optimized\u003c/li\u003e\n\u003cli\u003eDon’t restore current point after empty paths\u003c/li\u003e\n\u003cli\u003eAssume that 1ch equals 0.5em\u003c/li\u003e\n\u003cli\u003eFix various deprecation warnings\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.7.1 released on 2023-08-05\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDon’t draw clipPath when defined after reference\u003c/li\u003e\n\u003cli\u003eHandle evenodd fill rule with gradients and patterns\u003c/li\u003e\n\u003cli\u003eFix ratio and clip for \u0026quot;image\u0026quot; tags with no size\u003c/li\u003e\n\u003cli\u003eHandle data-URLs in safe mode\u003c/li\u003e\n\u003cli\u003eUse f-strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 2.7.0 released on 2023-03-20\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.5.2...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.5.2\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/ncusi/secret_life_of_CVEs/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/ncusi/secret_life_of_CVEs/pull/49","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ncusi%2Fsecret_life_of_CVEs/issues/49","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/49/packages"}},{"old_version":"2.8.2","new_version":"2.9.0","update_type":"minor","path":null,"pr_created_at":"2026-03-14T16:17:09.000Z","version_change":"2.8.2 → 2.9.0","issue":{"uuid":"4076150924","node_id":"PR_kwDOQMfvCM7Knlep","number":68,"state":"closed","title":"chore(deps): Bump cairosvg from 2.8.2 to 2.9.0","user":"dependabot[bot]","labels":["Container Available","dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-03-15T02:51:14.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-14T16:17:09.000Z","updated_at":"2026-03-15T02:51:22.000Z","time_to_close":38045,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","packages":[{"name":"cairosvg","old_version":"2.8.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.8.2 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.8.2...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.8.2\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/lexfrei/minecraft-operator/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/lexfrei/minecraft-operator/pull/68","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/lexfrei%2Fminecraft-operator/issues/68","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/68/packages"}},{"old_version":"2.8.2","new_version":"2.9.0","update_type":"minor","path":null,"pr_created_at":"2026-03-13T20:16:49.000Z","version_change":"2.8.2 → 2.9.0","issue":{"uuid":"4073216255","node_id":"PR_kwDOGAk_BM7KePbp","number":429,"state":"open","title":"build(deps): bump cairosvg from 2.8.2 to 2.9.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-13T20:16:49.000Z","updated_at":"2026-03-16T04:02:55.448Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"cairosvg","old_version":"2.8.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.8.2 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.8.2...2.9.0\"\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=cairosvg\u0026package-manager=uv\u0026previous-version=2.8.2\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/ansible/team-devtools/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/ansible/team-devtools/pull/429","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible%2Fteam-devtools/issues/429","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/429/packages"}},{"old_version":"2.7.1","new_version":"2.9.0","update_type":"minor","path":null,"pr_created_at":"2026-03-13T20:13:36.000Z","version_change":"2.7.1 → 2.9.0","issue":{"uuid":"4073199585","node_id":"PR_kwDOLpD82M7KeL-l","number":1,"state":"open","title":"build(deps): bump cairosvg from 2.7.1 to 2.9.0","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-03-13T20:13:36.000Z","updated_at":"2026-03-13T20:14:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.7.1 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/NtskwK/space_docs/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/NtskwK/space_docs/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/NtskwK%2Fspace_docs/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"}},{"old_version":"2.7.1","new_version":"2.9.0","update_type":"minor","path":"/backend/core/api","pr_created_at":"2026-03-13T20:12:00.000Z","version_change":"2.7.1 → 2.9.0","issue":{"uuid":"4073192200","node_id":"PR_kwDOLJgrHs7KeKbH","number":327,"state":"closed","title":"chore(deps): bump cairosvg from 2.7.1 to 2.9.0 in /backend/core/api","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-04-04T13:22:33.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-13T20:12:00.000Z","updated_at":"2026-04-04T13:22:43.000Z","time_to_close":1876233,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":"/backend/core/api","ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.7.1 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/glowingkitty/OpenMates/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/glowingkitty/OpenMates/pull/327","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/glowingkitty%2FOpenMates/issues/327","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/327/packages"}},{"old_version":"2.8.2","new_version":"2.9.0","update_type":"minor","path":null,"pr_created_at":"2026-03-13T20:08:32.000Z","version_change":"2.8.2 → 2.9.0","issue":{"uuid":"4073175198","node_id":"PR_kwDODj48ns7KeGt-","number":67,"state":"open","title":"Bump cairosvg from 2.8.2 to 2.9.0","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-03-13T20:08:32.000Z","updated_at":"2026-03-13T20:10:25.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cairosvg","old_version":"2.8.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.8.2 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.8.2...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.8.2\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/prcutler/paulcutler.org/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/prcutler/paulcutler.org/pull/67","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/prcutler%2Fpaulcutler.org/issues/67","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/67/packages"}},{"old_version":"2.7.1","new_version":"2.9.0","update_type":"minor","path":null,"pr_created_at":"2026-03-13T20:08:25.000Z","version_change":"2.7.1 → 2.9.0","issue":{"uuid":"4073174518","node_id":"PR_kwDOA9yFrs7KeGkb","number":411,"state":"open","title":"chore(deps): bump cairosvg from 2.7.1 to 2.9.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-13T20:08:25.000Z","updated_at":"2026-03-13T20:11:59.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.7.1 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/SCRT-HQ/PSGSuite/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/SCRT-HQ/PSGSuite/pull/411","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SCRT-HQ%2FPSGSuite/issues/411","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/411/packages"}},{"old_version":"2.8.2","new_version":"2.9.0","update_type":"minor","path":null,"pr_created_at":"2026-03-13T20:01:52.000Z","version_change":"2.8.2 → 2.9.0","issue":{"uuid":"4073145511","node_id":"PR_kwDOQKwXJM7KeAdN","number":42,"state":"closed","title":"Bump cairosvg from 2.8.2 to 2.9.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-14T00:56:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-13T20:01:52.000Z","updated_at":"2026-03-14T00:56:47.000Z","time_to_close":17692,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cairosvg","old_version":"2.8.2","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.8.2 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.8.2...2.9.0\"\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=cairosvg\u0026package-manager=uv\u0026previous-version=2.8.2\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/gitinference/jp-tools/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/gitinference/jp-tools/pull/42","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitinference%2Fjp-tools/issues/42","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/42/packages"}},{"old_version":"0.5","new_version":"2.9.0","update_type":null,"path":"/chrome/common/extensions/docs/server2/test_data/github_file_system/test_owner/repo/unzipped_repo","pr_created_at":"2026-03-13T20:00:20.000Z","version_change":"0.5 → 2.9.0","issue":{"uuid":"4073138750","node_id":"PR_kwDOASFeDc7Kd_EJ","number":8,"state":"closed","title":"Bump cairosvg from 0.5 to 2.9.0 in /chrome/common/extensions/docs/server2/test_data/github_file_system/test_owner/repo/unzipped_repo","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-11T00:36:06.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-13T20:00:20.000Z","updated_at":"2026-09-11T00:36:08.000Z","time_to_close":15654946,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cairosvg","old_version":"0.5","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":"/chrome/common/extensions/docs/server2/test_data/github_file_system/test_owner/repo/unzipped_repo","ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 0.5 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDon’t draw clipPath when defined after reference\u003c/li\u003e\n\u003cli\u003eHandle evenodd fill rule with gradients and patterns\u003c/li\u003e\n\u003cli\u003eFix ratio and clip for \u0026quot;image\u0026quot; tags with no size\u003c/li\u003e\n\u003cli\u003eHandle data-URLs in safe mode\u003c/li\u003e\n\u003cli\u003eUse f-strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eWhen processing SVG files, CairoSVG could access other files online, possibly leading to very long renderings or other security problems.\u003c/p\u003e\n\u003cp\u003eThis feature is now disabled by default. External resources can still be accessed using the \u0026quot;unsafe\u0026quot; or the \u0026quot;url_fetcher\u0026quot; parameter.\u003c/p\u003e\n\u003ch2\u003e2.6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.5 and 3.6, add support of Python 3.9, 3.10 and 3.11\u003c/li\u003e\n\u003cli\u003eSupport crispEdges value for text antialiasing\u003c/li\u003e\n\u003cli\u003eDon’t crash when including CMYK images\u003c/li\u003e\n\u003cli\u003eOnly update docstrings when not optimized\u003c/li\u003e\n\u003cli\u003eDon’t restore current point after empty paths\u003c/li\u003e\n\u003cli\u003eAssume that 1ch equals 0.5em\u003c/li\u003e\n\u003cli\u003eFix various deprecation warnings\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.5.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix marker path scale\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.5.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eWhen processing SVG files, CairoSVG was using two regular expressions which are vulnerable to Regular Expression Denial of Service (REDoS).\u003c/p\u003e\n\u003cp\u003eIf an attacker provided a malicious SVG, it could make CairoSVG get stuck processing the file for a very long time.\u003c/p\u003e\n\u003cp\u003eOther bug fixes:\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.7.1 released on 2023-08-05\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDon’t draw clipPath when defined after reference\u003c/li\u003e\n\u003cli\u003eHandle evenodd fill rule with gradients and patterns\u003c/li\u003e\n\u003cli\u003eFix ratio and clip for \u0026quot;image\u0026quot; tags with no size\u003c/li\u003e\n\u003cli\u003eHandle data-URLs in safe mode\u003c/li\u003e\n\u003cli\u003eUse f-strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 2.7.0 released on 2023-03-20\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/0.5...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=0.5\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/acidburn0zzz/chromium-crosswalk/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/acidburn0zzz/chromium-crosswalk/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/acidburn0zzz%2Fchromium-crosswalk/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"}},{"old_version":"2.7.1","new_version":"2.9.0","update_type":"minor","path":null,"pr_created_at":"2026-03-13T19:58:35.000Z","version_change":"2.7.1 → 2.9.0","issue":{"uuid":"4073131207","node_id":"PR_kwDOCKBRic7Kd9jB","number":206,"state":"closed","title":"Bump cairosvg from 2.7.1 to 2.9.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-29T09:57:04.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-13T19:58:35.000Z","updated_at":"2026-03-29T09:57:13.000Z","time_to_close":1346309,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.9.0","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cairosvg](https://github.com/Kozea/CairoSVG) from 2.7.1 to 2.9.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.9.0 released on 2026-03-13\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eWARNING:\u003c/strong\u003e this is a security update.\u003c/p\u003e\n\u003cp\u003eUsing a lot of recursively nested use tags could lead to long rendering times with\nrelatively small inputs. CairoSVG now stops rendering when more than 100k use tags are\nrendered.\u003c/p\u003e\n\u003cp\u003eUsing the --unsafe option allows to render larger documents.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, add support of Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/fe5cae58e929e6d4337442c96ab415d1a7230905\"\u003e\u003ccode\u003efe5cae5\u003c/code\u003e\u003c/a\u003e Version 2.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/6dde8685ed3f19837767bce7a13a5491e3d0e0bf\"\u003e\u003ccode\u003e6dde868\u003c/code\u003e\u003c/a\u003e Abort when more than 100k referenced elements are rendered\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/a6b3a98ca17911967e4682d2e7f6590073a76175\"\u003e\u003ccode\u003ea6b3a98\u003c/code\u003e\u003c/a\u003e Cut long line again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/ce8b51d8ad1427b9276b4fc6bb4583c72c641f9c\"\u003e\u003ccode\u003ece8b51d\u003c/code\u003e\u003c/a\u003e Cut long line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b7818c927afc78cac54a763b65e7c71b7e30fedc\"\u003e\u003ccode\u003eb7818c9\u003c/code\u003e\u003c/a\u003e Clarify unsafe option scope without removing security warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.9.0\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.9.0)](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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/r2dt-bio/R2DT/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/r2dt-bio/R2DT/pull/206","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/r2dt-bio%2FR2DT/issues/206","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/206/packages"}},{"old_version":"2.7.1","new_version":"2.8.2","update_type":"minor","path":"the graphics-dependencies group across 1 directory","pr_created_at":"2026-01-20T21:27:15.000Z","version_change":"2.7.1 → 2.8.2","issue":{"uuid":"3835529990","node_id":"PR_kwDOLufxkc6-T0U9","number":145,"state":"open","title":"deps: bump cairosvg from 2.7.1 to 2.8.2 in the graphics-dependencies group across 1 directory","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-01-20T21:27:15.000Z","updated_at":"2026-01-20T21:29:24.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps","packages":[{"name":"cairosvg","old_version":"2.7.1","new_version":"2.8.2","repository_url":"https://github.com/Kozea/CairoSVG"}],"path":"the graphics-dependencies group across 1 directory","ecosystem":"pip"},"body":"Bumps the graphics-dependencies group with 1 update in the / directory: [cairosvg](https://github.com/Kozea/CairoSVG).\n\nUpdates `cairosvg` from 2.7.1 to 2.8.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/CairoSVG/releases\"\u003ecairosvg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/blob/main/NEWS.rst\"\u003ecairosvg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion 2.8.2 released on 2025-05-15\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both Unicode strings and bytes as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.1 released on 2025-05-14\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAllow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eVersion 2.8.0 released on 2025-05-12\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.7 and 3.8, add support of Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eOptimize math operations\u003c/li\u003e\n\u003cli\u003eUse pathlib\u003c/li\u003e\n\u003cli\u003eClose paths for ellipses and circles\u003c/li\u003e\n\u003cli\u003eFix output ratio for SVG surfaces\u003c/li\u003e\n\u003cli\u003eAvoid endless loops when updating def attributes\u003c/li\u003e\n\u003cli\u003eRound PNG size\u003c/li\u003e\n\u003cli\u003eDon’t crash when more than 2 values are given to translate and scale functions\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/Kozea/CairoSVG/commit/9e8c6ede00dd1c4495fca4809b4cabd628a85eb9\"\u003e\u003ccode\u003e9e8c6ed\u003c/code\u003e\u003c/a\u003e Version 2.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/1c28b57bea389257f8a9ca01e9d1af5b98362050\"\u003e\u003ccode\u003e1c28b57\u003c/code\u003e\u003c/a\u003e De-duplicate input string encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/b4670eca955cb65eff8f6f8b1d1a457a2a3d3a3d\"\u003e\u003ccode\u003eb4670ec\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/CairoSVG/issues/443\"\u003e#443\u003c/a\u003e from marcelometal/ensure-bytestring-type-before-gzip\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/245b3f20470b216c6254cd4ac1f250b2c5913716\"\u003e\u003ccode\u003e245b3f2\u003c/code\u003e\u003c/a\u003e Ensure bytestring is bytes before checking for gzip header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/e5128ec50c305bfd6f0c9eb6e77726e6c86817a8\"\u003e\u003ccode\u003ee5128ec\u003c/code\u003e\u003c/a\u003e Version 2.8.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/abdb8f9bbe42f1cf62b85f6fb5350cb9b485a66c\"\u003e\u003ccode\u003eabdb8f9\u003c/code\u003e\u003c/a\u003e Allow both text- and bytes-based file objects as input\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/37952cde77960d43c0e62ac7632d4929e9199433\"\u003e\u003ccode\u003e37952cd\u003c/code\u003e\u003c/a\u003e Version 2.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/5b1c86010f6a44aa783bdfec4db2955b8877a5ac\"\u003e\u003ccode\u003e5b1c860\u003c/code\u003e\u003c/a\u003e Update setup.cfg\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/500391d99c344c3a3fc802fd16240926b5a38cc4\"\u003e\u003ccode\u003e500391d\u003c/code\u003e\u003c/a\u003e Update supported Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/CairoSVG/commit/abafa8ae248dc9cef0349adaa2f61849ea56920c\"\u003e\u003ccode\u003eabafa8a\u003c/code\u003e\u003c/a\u003e Don’t crash when more than 2 values are given to translate and scale\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/CairoSVG/compare/2.7.1...2.8.2\"\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=cairosvg\u0026package-manager=pip\u0026previous-version=2.7.1\u0026new-version=2.8.2)](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 merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\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/OpenMS/pyopenms_viz/pull/145","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMS%2Fpyopenms_viz/issues/145","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/145/packages"}}]}