{"id":30787,"name":"pyrefly","ecosystem":"pip","repository_url":"https://github.com/facebook/pyrefly","issues_count":243,"created_at":"2025-06-07T06:50:12.388Z","updated_at":"2025-06-07T06:50:12.388Z","purl":"pkg:pypi/pyrefly","metadata":{"id":11365144,"name":"pyrefly","ecosystem":"pypi","description":"A faster Python type checker written in Rust","homepage":null,"licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/facebook/pyrefly","keywords_array":["typechecker","typechecking"],"namespace":null,"versions_count":31,"first_release_published_at":"2025-02-19T14:19:35.000Z","latest_release_published_at":"2025-06-07T00:19:19.000Z","latest_release_number":"0.18.1","last_synced_at":"2025-06-07T00:30:59.790Z","created_at":"2025-02-19T14:32:08.667Z","updated_at":"2025-06-07T00:31:00.701Z","registry_url":"https://pypi.org/project/pyrefly/","install_command":"pip install pyrefly --index-url https://pypi.org/simple","documentation_url":"https://pyrefly.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 3 - Alpha","Intended Audience :: Developers","Operating System :: MacOS","Operating System :: Microsoft :: Windows","Operating System :: POSIX :: Linux","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Topic :: Software Development"],"normalized_name":"pyrefly"},"repo_metadata":{"id":281740482,"uuid":"935685654","full_name":"facebook/pyrefly","owner":"facebook","description":"A fast type checker and IDE for Python","archived":false,"fork":false,"pushed_at":"2025-05-26T18:57:17.000Z","size":116111,"stargazers_count":2147,"open_issues_count":149,"forks_count":60,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-05-26T19:52:36.726Z","etag":null,"topics":["code-quality","ide","language","language-server","lsp","python","rust","type-check","type-checker","typecheck","typechecker","types","typing"],"latest_commit_sha":null,"homepage":"http://pyrefly.org/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facebook.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null}},"created_at":"2025-02-19T21:09:33.000Z","updated_at":"2025-05-26T19:39:06.000Z","dependencies_parsed_at":"2025-05-19T16:48:01.437Z","dependency_job_id":null,"html_url":"https://github.com/facebook/pyrefly","commit_stats":null,"previous_names":["facebook/pyrefly"],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebook","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":257609267,"owners_count":22572413,"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":"facebook","name":"Meta","uuid":"69631","kind":"organization","description":"We are working to build community through open source technology. NB: members must have two-factor auth.","email":null,"website":"https://opensource.fb.com","location":"Menlo Park, California","twitter":"MetaOpenSource","company":null,"icon_url":"https://avatars.githubusercontent.com/u/69631?v=4","repositories_count":149,"last_synced_at":"2025-05-29T00:41:30.787Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/facebook","funding_links":[],"total_stars":1025316,"followers":30151,"following":0,"created_at":"2022-11-02T16:18:58.639Z","updated_at":"2025-05-29T00:41:30.788Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebook","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebook/repositories"},"tags":[{"name":"0.17.0","sha":"a532b41bfacc5934abc0fbe8ced769a6a75082ea","kind":"commit","published_at":"2025-05-26T13:10:28.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.17.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.17.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.17.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.17.0/manifests"},{"name":"0.16.3","sha":"8e7fe2991664af6061bafb32ac0f6f9690982aae","kind":"commit","published_at":"2025-05-25T21:15:44.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.16.3","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.16.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.16.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.16.3/manifests"},{"name":"0.16.2","sha":"31a34df9b0d50952fbc01cdbb9dba02808a92e56","kind":"commit","published_at":"2025-05-22T18:04:07.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.16.2","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.16.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.16.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.16.2/manifests"},{"name":"0.16.1","sha":"98f5114a2935297606ea1331673aa914d8fb3ba5","kind":"commit","published_at":"2025-05-20T15:43:53.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.16.1","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.16.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.16.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.16.1/manifests"},{"name":"0.16.0","sha":"6f0a45dcf86ef15fceff5254b0bc1afb00957a36","kind":"commit","published_at":"2025-05-19T15:21:24.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.16.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.16.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.16.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.16.0/manifests"},{"name":"0.15.2","sha":"29720dd3e372b2f8b2ecaa37990f61bb4dc00006","kind":"commit","published_at":"2025-05-15T16:45:13.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.15.2","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.15.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.15.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.15.2/manifests"},{"name":"0.15.1","sha":"19539b216c8851b0d343e194b88cd5c47a2c1bd5","kind":"commit","published_at":"2025-05-14T12:55:57.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.15.1","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.15.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.15.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.15.1/manifests"},{"name":"0.15.0","sha":"cbc8623fe3723e8732665c9dcaf72ed4767239ae","kind":"commit","published_at":"2025-05-12T17:57:21.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.15.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.15.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.15.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.15.0/manifests"},{"name":"0.14.1","sha":"9e7ec562c9c3ee80087c4f4fd9bdec97797ada24","kind":"commit","published_at":"2025-05-10T03:27:16.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.14.1","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.14.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.14.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.14.1/manifests"},{"name":"0.14.0","sha":"5cfcc9bb49c6b243ba6159aa23d630b3f8275795","kind":"commit","published_at":"2025-05-06T05:59:48.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.14.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.14.0/manifests"},{"name":"0.13.1","sha":"7bf4311819d3343f42c08f639c804651e6267657","kind":"commit","published_at":"2025-05-05T17:05:21.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.13.1","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.13.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.13.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.13.1/manifests"},{"name":"0.13.0","sha":"8c0786e4edbaf61f07e15c990fbf466bf0fb61e8","kind":"commit","published_at":"2025-04-28T18:31:07.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.13.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.13.0/manifests"},{"name":"0.12.1","sha":"03a00a116e1445ce60a259434cec5b872830b400","kind":"commit","published_at":"2025-04-26T00:14:15.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.12.1","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.12.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.12.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.12.1/manifests"},{"name":"0.12.0","sha":"a50dd8059eb2e242f7698f49d528ac3919f843f3","kind":"commit","published_at":"2025-04-21T19:06:25.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.12.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.12.0/manifests"},{"name":"0.11.1","sha":"cf944f3bac582b73fbc11e6ff243ceaef07f6678","kind":"commit","published_at":"2025-04-16T20:44:37.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.11.1","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.11.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.11.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.11.1/manifests"},{"name":"0.11.0","sha":"8df3358ce90d864f68f57ee384dbc09d4b112716","kind":"commit","published_at":"2025-04-14T17:31:14.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.11.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.11.0/manifests"},{"name":"0.10.2","sha":"c8f50ed12f660f634df858c5077d9dfe98063dbf","kind":"commit","published_at":"2025-04-11T03:39:30.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.10.2","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.10.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.10.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.10.2/manifests"},{"name":"0.10.1","sha":"165fe2bad2331f1aea6e48db88bc5844ce965381","kind":"commit","published_at":"2025-04-09T03:36:57.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.10.1","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.10.1/manifests"},{"name":"0.10.0","sha":"5fc56ea9cd33556c300f7faf8d366c649ee557cf","kind":"commit","published_at":"2025-04-07T17:48:43.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.10.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.10.0/manifests"},{"name":"0.9.0","sha":"558d858eba95fb0298514f34d58ab535fc579ab5","kind":"commit","published_at":"2025-03-31T23:13:56.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.9.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.9.0/manifests"},{"name":"0.8.0","sha":"0ef323fd567974f5d221157a92aabcace85d4621","kind":"commit","published_at":"2025-03-26T01:04:49.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.8.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.8.0/manifests"},{"name":"0.7.0","sha":"c9acf535e2bbf215a1a093dd9a6ab131989c8dc3","kind":"commit","published_at":"2025-03-24T17:24:33.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.7.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.7.0/manifests"},{"name":"0.6.0","sha":"63971c27275fa35d74eda9267da4b774a75ae2d3","kind":"commit","published_at":"2025-03-19T19:59:21.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.6.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.6.0/manifests"},{"name":"0.5.0","sha":"16d1f55a7c9dc4a4c469d859777d59773fa6b893","kind":"commit","published_at":"2025-03-17T20:50:36.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.5.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.5.0/manifests"},{"name":"0.4.0","sha":"e1aba4215d10a75670f1d72dc13274dfa0773f0d","kind":"commit","published_at":"2025-03-13T20:43:35.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.4.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.4.0/manifests"},{"name":"0.3.0","sha":"12d440d25b5d0e505592a51483d85313dba6d737","kind":"commit","published_at":"2025-03-06T02:30:30.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.3.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.3.0/manifests"},{"name":"0.2.0","sha":"a2e68aab71b0d2debd813eab708ac2a27660096a","kind":"commit","published_at":"2025-03-05T01:08:52.000Z","download_url":"https://codeload.github.com/facebook/pyrefly/tar.gz/0.2.0","html_url":"https://github.com/facebook/pyrefly/releases/tag/0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fpyrefly/tags/0.2.0/manifests"}]},"repo_metadata_updated_at":"2025-06-02T14:47:48.042Z","dependent_packages_count":0,"downloads":36727,"downloads_period":"last-month","dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":54.05818163903737,"dependent_packages_count":9.6000012316181,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":31.829091435327737},"purl":"pkg:pypi/pyrefly","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pyrefly","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pyrefly","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pyrefly/dependencies","status":null,"funding_links":[],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyrefly/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyrefly/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyrefly/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyrefly/related_packages","maintainers":[{"uuid":"facebook","login":"facebook","name":null,"email":null,"url":null,"packages_count":95,"html_url":"https://pypi.org/user/facebook/","role":null,"created_at":"2025-03-04T04:17:33.004Z","updated_at":"2025-03-04T04:17:33.004Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/facebook/packages"},{"uuid":"rchen152","login":"rchen152","name":null,"email":null,"url":null,"packages_count":7,"html_url":"https://pypi.org/user/rchen152/","role":null,"created_at":"2025-03-04T04:17:33.066Z","updated_at":"2025-03-04T04:17:33.066Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/rchen152/packages"},{"uuid":"aaronpollack","login":"aaronpollack","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/aaronpollack/","role":"Owner","created_at":"2025-02-19T14:34:12.533Z","updated_at":"2025-02-19T14:34:12.533Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/aaronpollack/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690499,"maintainers_count":292846,"namespaces_count":0,"keywords_count":228675,"github":"pypi","metadata":{"funded_packages_count":48967},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-07T05:28:50.775Z","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":61,"unique_repositories_count_past_30_days":4,"recent_issues":[{"uuid":"4702388243","node_id":"PR_kwDORA8Bs87odWWy","number":199,"state":"closed","title":"chore(deps-dev): bump pyrefly from 1.1.0 to 1.1.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-19T17:05:15.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-19T17:05:03.000Z","updated_at":"2026-06-19T17:06:12.000Z","time_to_close":12,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"pyrefly","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 1.1.0 to 1.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.1.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eRelease date: June 18, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v1.1.1 is a patch release with a single bug fix.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3867\"\u003e#3867\u003c/a\u003e:\u003c/strong\u003e Fixed a regression introduced in 1.1.0 where \u003ccode\u003eisinstance()\u003c/code\u003e narrowing of a union variable silently stopped working when an earlier sibling branch in the same \u003ccode\u003eif\u003c/code\u003e/\u003ccode\u003eelif\u003c/code\u003e/\u003ccode\u003eelse\u003c/code\u003e chain narrowed a different variable with \u003ccode\u003eisinstance()\u003c/code\u003e and returned. The later narrowing left the union untouched, producing false \u003ccode\u003emissing-attribute\u003c/code\u003e errors on code that checked correctly in 1.0.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --upgrade pyrefly==1.1.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eHow to safely upgrade your codebase\u003c/h3\u003e\n\u003cp\u003eUpgrading the version of Pyrefly you're using or a third-party library you depend on can reveal new type errors in your code. Fixing them all at once is often unrealistic. We've written scripts to help you temporarily silence them. After upgrading, follow these steps:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ccode\u003epyrefly check --suppress-errors\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRun your code formatter of choice\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epyrefly check --remove-unused-ignores\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRepeat until you achieve a clean formatting run and a clean type check.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThis will add \u003ccode\u003e# pyrefly: ignore\u003c/code\u003e comments to your code, enabling you to silence errors and return to fix them later. This can make the process of upgrading a large codebase much more manageable.\u003c/p\u003e\n\u003cp\u003eRead more about error suppressions in the \u003ca href=\"https://pyrefly.org/en/docs/error-suppressions/\"\u003ePyrefly documentation\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b87de05834c401898c79fd9686b806c051dd3667\"\u003e\u003ccode\u003eb87de05\u003c/code\u003e\u003c/a\u003e cut 1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a297847fa0cee3a34b1dd2a055a70c1ebf3c0237\"\u003e\u003ccode\u003ea297847\u003c/code\u003e\u003c/a\u003e release notes for v1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/4be867378805aa33bfe87d12e589561964a61b4f\"\u003e\u003ccode\u003e4be8673\u003c/code\u003e\u003c/a\u003e Fix isinstance narrowing silently breaking after a sibling branch narrows ano...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facebook/pyrefly/compare/1.1.0...1.1.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=pyrefly\u0026package-manager=uv\u0026previous-version=1.1.0\u0026new-version=1.1.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/maksimzayats/diwire/pull/199","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/maksimzayats%2Fdiwire/issues/199","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/199/packages"},{"uuid":"4667961567","node_id":"PR_kwDOH8gfRs7mrymG","number":217,"state":"closed","title":"Bump the all-dependencies group with 22 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-16T00:55:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-15T18:51:12.000Z","updated_at":"2026-06-16T00:55:42.000Z","time_to_close":21868,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-dependencies","update_count":22,"packages":[{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"docutils","old_version":"0.22.3","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"imagesize","old_version":"1.4.1","new_version":"2.0.0","repository_url":"https://github.com/shibukawa/imagesize_py"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"roman-numerals","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"packaging","old_version":"25.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"ruff","old_version":"0.14.9","new_version":"0.15.17","repository_url":"https://github.com/astral-sh/ruff"},{"name":"build","old_version":"1.3.0","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"pypi-attestations","old_version":"0.0.28","new_version":"0.0.29","repository_url":"https://github.com/pypi/pypi-attestations"},{"name":"pytest","old_version":"9.0.1","new_version":"9.1.0","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"cython","old_version":"3.2.2","new_version":"3.2.5","repository_url":"https://github.com/cython/cython"},{"name":"setuptools","old_version":"80.9.0","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"mypy","old_version":"1.19.1","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.44.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"pyright","old_version":"1.1.407","new_version":"1.1.410","repository_url":"https://github.com/RobertCraigie/pyright-python"},{"name":"ty","old_version":"0.0.1a30","new_version":"0.0.49","repository_url":"https://github.com/astral-sh/ty"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20251115","new_version":"0.22.3.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-dependencies group with 22 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.22.3` | `0.23` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.1` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [imagesize](https://github.com/shibukawa/imagesize_py) | `1.4.1` | `2.0.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [roman-numerals](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.15.17` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.5.0` |\n| [pypi-attestations](https://github.com/pypi/pypi-attestations) | `0.0.28` | `0.0.29` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.1` | `9.1.0` |\n| [cython](https://github.com/cython/cython) | `3.2.2` | `3.2.5` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `82.0.1` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.1.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.44.0` | `1.0.0` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.407` | `1.1.410` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.1a30` | `0.0.49` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260504` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20251115` | `0.22.3.20260518` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250913` | `2.33.0.20260518` |\n\nUpdates `pygments` from 2.19.2 to 2.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.20.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.20.0\u003c/h2\u003e\n\u003cp\u003e(released March 29th, 2026)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/708197d82827ba2d5ca78bcbb653c7102ce86dcd\"\u003e\u003ccode\u003e708197d\u003c/code\u003e\u003c/a\u003e Fix underline length.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d4538ae8621d766ecc91ff59caf76ab75983abc\"\u003e\u003ccode\u003e1d4538a\u003c/code\u003e\u003c/a\u003e Prepare 2.20 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/2ceaee4e634eebae2d10a47fd05406871f6bac8f\"\u003e\u003ccode\u003e2ceaee4\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/e3a3c54b58c7f80bc4db887e471d4f91c77844ed\"\u003e\u003ccode\u003ee3a3c54\u003c/code\u003e\u003c/a\u003e Fix Haskell lexer: handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d7c3453e342dac319f58e4091f4ef183cc49d802\"\u003e\u003ccode\u003ed7c3453\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3071\"\u003e#3071\u003c/a\u003e from pygments/harden-html-formatter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/0f97e7c37d44abfa4ddfddf44a3290fdad586034\"\u003e\u003ccode\u003e0f97e7c\u003c/code\u003e\u003c/a\u003e Harden the HTML formatter against CSS.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/9f981b2ba42b88ca5bdcebf12cd01efd7cd80aec\"\u003e\u003ccode\u003e9f981b2\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d889151024e9a53f3702a60558b29b070306e9e\"\u003e\u003ccode\u003e1d88915\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/c3d93adb9827fc054c3c12b47bde31c781a36a93\"\u003e\u003ccode\u003ec3d93ad\u003c/code\u003e\u003c/a\u003e Fix ASN.1 lexer: recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/4f06bcf8a5ba3f2b5bda24a26ccf041a1a65d91e\"\u003e\u003ccode\u003e4f06bcf\u003c/code\u003e\u003c/a\u003e fix bad behaving backtracking regex in CommonLispLexer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.2...2.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.22.3 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\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/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.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/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\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/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imagesize` from 1.4.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5ab28d47b96d6a0738ec036034919a739b4d64da\"\u003e\u003ccode\u003e5ab28d4\u003c/code\u003e\u003c/a\u003e bump module version to 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/63d6afb8e24b9f9d599f7a15fa50ebc7964ad7c7\"\u003e\u003ccode\u003e63d6afb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/82\"\u003e#82\u003c/a\u003e from shibukawa/codex/update-readme-and-setup-instructi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/294606629eaf3950290de90a4b1ab9aaed7c89c3\"\u003e\u003ccode\u003e2946066\u003c/code\u003e\u003c/a\u003e docs: clarify EXIF orientation formats in v2.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/53eff2e3ab713b81883003bbd4eca586cc592431\"\u003e\u003ccode\u003e53eff2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/81\"\u003e#81\u003c/a\u003e from shibukawa/codex/refactor-code-to-reduce-duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/ac14f2af0208f9d57780d86ff619a32f80b90109\"\u003e\u003ccode\u003eac14f2a\u003c/code\u003e\u003c/a\u003e Refactor duplicated JPEG segment parsing logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/48ab954c707642d06081c8b5eae53b61b410715a\"\u003e\u003ccode\u003e48ab954\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/80\"\u003e#80\u003c/a\u003e from shibukawa/codex/add-avif-exif-rotation-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5cada1084cc21621541216810ecaf4514ca0e60b\"\u003e\u003ccode\u003e5cada10\u003c/code\u003e\u003c/a\u003e Add AVIF EXIF rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/232c6d5204e38d5a288114c098304cc2f8358f69\"\u003e\u003ccode\u003e232c6d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/79\"\u003e#79\u003c/a\u003e from shibukawa/codex/add-heic/heif-support-and-rotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/324c970eb6c8d5326a6e3e16216ed2d498358219\"\u003e\u003ccode\u003e324c970\u003c/code\u003e\u003c/a\u003e Add HEIC/HEIF size and rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/7b7bb5f720401332eba12e93ad2e31d1bbc01cd4\"\u003e\u003ccode\u003e7b7bb5f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/78\"\u003e#78\u003c/a\u003e from shibukawa/codex/add-pypi-link-and-python-version-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shibukawa/imagesize_py/compare/1.4.1...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `roman-numerals` from 3.1.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/releases\"\u003eroman-numerals's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.1.0\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.0.0\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/AA-Turner/roman-numerals/blob/master/CHANGES.rst\"\u003eroman-numerals's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.1.0 (released 17 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003eAdd some debug assertions for unsafe blocks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.0.0 (released 16 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRename Python package to \u003ccode\u003eroman-numerals\u003c/code\u003e on PyPI.\u003c/li\u003e\n\u003cli\u003ePublish \u003ccode\u003eroman-numerals-py\u003c/code\u003e as a meta-package that depends\non \u003ccode\u003eroman-numerals\u003c/code\u003e and installs no modules.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.15.\u003c/li\u003e\n\u003cli\u003eIncrease the minimum supported Rust version (MSRV) to 1.81.0.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::error::Error\u003c/code\u003e trait for all error types.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::fmt\u003c/code\u003e traits in \u003ccode\u003eno-std\u003c/code\u003e mode.\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eFrom\u0026lt;RomanNumeral\u0026gt;\u003c/code\u003e for most integer types.\u003c/li\u003e\n\u003cli\u003ePublish the \u003ccode\u003eroman-numerals-rs\u003c/code\u003e crate using \u003ccode\u003eTrusted Publishing \u0026lt;https://crates.io/docs/trusted-publishing\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/53c9c4eac63b91728fba3c26329163ee57654d21\"\u003e\u003ccode\u003e53c9c4e\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a3793b83fab7064107ac56a482a6fa93bc9c5048\"\u003e\u003ccode\u003ea3793b8\u003c/code\u003e\u003c/a\u003e Add more SAFETY notes and debug assertions to unsafe blocks (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/46d346e2d08b634856c79783e404616b65626ba7\"\u003e\u003ccode\u003e46d346e\u003c/code\u003e\u003c/a\u003e Adjust annotations in light of PEP 649\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/b8fae405d948415f7397ae4f64569c53cb623105\"\u003e\u003ccode\u003eb8fae40\u003c/code\u003e\u003c/a\u003e Adjust an example in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a88464130711ad5e8d56e6ff747d17068ae17534\"\u003e\u003ccode\u003ea884641\u003c/code\u003e\u003c/a\u003e Restore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c3e1b6b4e6e02e5e19c26dc6f72bbb7b1060cca5\"\u003e\u003ccode\u003ec3e1b6b\u003c/code\u003e\u003c/a\u003e Release v4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c335cb63ed97e684a4e9453639bfc7e9f487bb41\"\u003e\u003ccode\u003ec335cb6\u003c/code\u003e\u003c/a\u003e Add publishing step for the \u003ccode\u003eroman-numerals-py\u003c/code\u003e meta-package (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/105\"\u003e#105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/649f6e62e7bd24123d7dd489609ae47168aaeb1b\"\u003e\u003ccode\u003e649f6e6\u003c/code\u003e\u003c/a\u003e Add Trusted Publishing workflow for crates.io (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/ffa4dd1b33eae62f1bd1d44549e10a528b8f1f58\"\u003e\u003ccode\u003effa4dd1\u003c/code\u003e\u003c/a\u003e rust: Refactor tests (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/26b41561c1d9813104548777b5ed9622d7125b38\"\u003e\u003ccode\u003e26b4156\u003c/code\u003e\u003c/a\u003e Simplify ASCII detection closures (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/102\"\u003e#102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/AA-Turner/roman-numerals/compare/v3.1.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 25.0 to 26.2\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.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten by \u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) by \u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1168\"\u003epypa/packaging#1168\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1170\"\u003epypa/packaging#1170\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1171\"\u003epypa/packaging#1171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: re-export ExceptionGroup for now by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1164\"\u003epypa/packaging#1164\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: add errors section and fix missing details by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1159\"\u003epypa/packaging#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(dev): document property-based test suite by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1167\"\u003epypa/packaging#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in DirectUrl documentation by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1169\"\u003epypa/packaging#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(specifiers): add is_unsatisfiable() usage example by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1166\"\u003epypa/packaging#1166\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1158\"\u003epypa/packaging#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1174\"\u003epypa/packaging#1174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse native uv integration in rtd by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1175\"\u003epypa/packaging#1175\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/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/packaging/compare/26.1...26.2\"\u003ehttps://github.com/pypa/packaging/compare/26.1...26.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e26.1\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cdel\u003ePEP 783: add handling for Emscripten wheel tags by \u003ca href=\"https://github.com/hoodmane\"\u003e\u003ccode\u003e@​hoodmane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/804\"\u003epypa/packaging#804\u003c/a\u003e\u003c/del\u003e (old name used in implementation, will be fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1099\"\u003epypa/packaging#1099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1065\"\u003epypa/packaging#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/944\"\u003epypa/packaging#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1071\"\u003epypa/packaging#1071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1119\"\u003epypa/packaging#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1110\"\u003epypa/packaging#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1068\"\u003epypa/packaging#1068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1146\"\u003epypa/packaging#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1078\"\u003epypa/packaging#1078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1150\"\u003epypa/packaging#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1140\"\u003epypa/packaging#1140\u003c/a\u003e\u003c/li\u003e\n\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.2 - 2026-04-24\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFixes:\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten in (:pull:\u003ccode\u003e1160\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\u003cbr /\u003e\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\u003cbr /\u003e\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) (:pull:\u003ccode\u003e1163\u003c/code\u003e, :pull:\u003ccode\u003e1168\u003c/code\u003e, :pull:\u003ccode\u003e1170\u003c/code\u003e, :pull:\u003ccode\u003e1171\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRe-export \u003ccode\u003eExceptionGroup\u003c/code\u003e in metadata for now in (:pull:\u003ccode\u003e1164\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd errors section and fix missing details in (:pull:\u003ccode\u003e1159\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument our property-based test suite in (:pull:\u003ccode\u003e1167\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix a \u003ccode\u003eDirectUrl\u003c/code\u003e typo in (:pull:\u003ccode\u003e1169\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd example of \u003ccode\u003eis_unsatisfiable\u003c/code\u003e in (:pull:\u003ccode\u003e1166\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor in (:pull:\u003ccode\u003e1158\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees in (:pull:\u003ccode\u003e1174\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse new native ReadTheDocs uv integration in (:pull:\u003ccode\u003e1175\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e26.1 - 2026-04-14\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 783: add handling for Emscripten wheel tags in (:pull:\u003ccode\u003e804\u003c/code\u003e) (old name used in implementation, fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag in (:pull:\u003ccode\u003e1099\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 735: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package in (:pull:\u003ccode\u003e1065\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module in (:pull:\u003ccode\u003e944\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module in (:pull:\u003ccode\u003e1071\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) in (:pull:\u003ccode\u003e1119\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags in (:pull:\u003ccode\u003e1110\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e in (:pull:\u003ccode\u003e1068\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's in (:pull:\u003ccode\u003e1146\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e in (:pull:\u003ccode\u003e1078\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e in (:pull:\u003ccode\u003e1150\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1140\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026gt;V\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1141\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private in (:pull:\u003ccode\u003e1125\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII in (:pull:\u003ccode\u003e1102\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/84a87ee42483d7352f9502d78a9553da8859aa7a\"\u003e\u003ccode\u003e84a87ee\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4a616b65bed23c8c6d58e6b0fc1a4434d4ff1f14\"\u003e\u003ccode\u003e4a616b6\u003c/code\u003e\u003c/a\u003e docs: a few more updates to prepare for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9de6f44f1e82d4595edf3aad1c4f6f98c85935a0\"\u003e\u003ccode\u003e9de6f44\u003c/code\u003e\u003c/a\u003e ci: use native uv integration in rtd (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1175\"\u003e#1175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/bc76e14debd1a2799d1ca8f9d9c9823f35bfa466\"\u003e\u003ccode\u003ebc76e14\u003c/code\u003e\u003c/a\u003e chore: update changelog for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1161\"\u003e#1161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3f00091c08f0aa830e33ed7db00f16f11c8ac97f\"\u003e\u003ccode\u003e3f00091\u003c/code\u003e\u003c/a\u003e tests: add a pickle check (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1174\"\u003e#1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/48a8a069805291186522de3eff73ea80a8ca96ad\"\u003e\u003ccode\u003e48a8a06\u003c/code\u003e\u003c/a\u003e fix: make Requirements/Markers pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/823b44ed1f904084a77ae3adf0ef130af6365f84\"\u003e\u003ccode\u003e823b44e\u003c/code\u003e\u003c/a\u003e fix: make Tags pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4bed32d920ca7211dd65fdf0a1ee06376e9c4733\"\u003e\u003ccode\u003e4bed32d\u003c/code\u003e\u003c/a\u003e fix: make Specifier / SpecifierSet pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/963118e37caae97bc8b72f72956c7fb4ca9857ec\"\u003e\u003ccode\u003e963118e\u003c/code\u003e\u003c/a\u003e fix: re-export ExceptionGroup for now (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/66e34a80256c96dea11da143682950c84b8133bb\"\u003e\u003ccode\u003e66e34a8\u003c/code\u003e\u003c/a\u003e docs(specifiers): add is_unsatisfiable() usage example (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1166\"\u003e#1166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.9 to 0.15.17\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.17\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-11.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in suppression comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25614\"\u003e#25614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eignore\u003c/code\u003e comments within a \u003ccode\u003edisable\u003c/code\u003e/\u003ccode\u003eenable\u003c/code\u003e pair (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25845\"\u003e#25845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrioritize human-readable names in CLI output (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25869\"\u003e#25869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect diagnostic start and parent ranges and trailing comments in \u003ccode\u003eruff:ignore\u003c/code\u003e suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e to safe decorators (\u003ccode\u003eASYNC119\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25775\"\u003e#25775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Also check \u003ccode\u003epytest_asyncio\u003c/code\u003e fixtures (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25375\"\u003e#25375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ban \u003ccode\u003epytest\u003c/code\u003e autouse fixtures (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25477\"\u003e#25477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Add \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e automatically (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23259\"\u003e#23259\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix diagnostic when \u003ccode\u003eruff:enable\u003c/code\u003e or \u003ccode\u003eruff:disable\u003c/code\u003e appears where \u003ccode\u003eruff:ignore\u003c/code\u003e is expected (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25700\"\u003e#25700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Preserve leading empty literals to avoid syntax errors (\u003ccode\u003eUP032\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25491\"\u003e#25491\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-pytest-style\u003c/code\u003e] Clarify diagnostic message for single parameters (\u003ccode\u003ePT007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25592\"\u003e#25592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003enumpy\u003c/code\u003e] Drop autofix for \u003ccode\u003enp.in1d\u003c/code\u003e (\u003ccode\u003eNPY201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25612\"\u003e#25612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Exempt Python version comparisons (\u003ccode\u003ePLR2004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25743\"\u003e#25743\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReserve AST \u003ccode\u003eVec\u003c/code\u003es with correct capacity for common cases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25451\"\u003e#25451\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve whitespace for Quarto cell option comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25641\"\u003e#25641\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rule names in \u003ccode\u003eruff rule\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25640\"\u003e#25640\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix playground diagnostics scrollbars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25642\"\u003e#25642\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/SuryanshSS1011\"\u003e\u003ccode\u003e@​SuryanshSS1011\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romero-deshaw\"\u003e\u003ccode\u003e@​romero-deshaw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/karlhillx\"\u003e\u003ccode\u003e@​karlhillx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carljm\"\u003e\u003ccode\u003e@​carljm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.17\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-11.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in suppression comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25614\"\u003e#25614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eignore\u003c/code\u003e comments within a \u003ccode\u003edisable\u003c/code\u003e/\u003ccode\u003eenable\u003c/code\u003e pair (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25845\"\u003e#25845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrioritize human-readable names in CLI output (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25869\"\u003e#25869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect diagnostic start and parent ranges and trailing comments in \u003ccode\u003eruff:ignore\u003c/code\u003e suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e to safe decorators (\u003ccode\u003eASYNC119\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25775\"\u003e#25775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Also check \u003ccode\u003epytest_asyncio\u003c/code\u003e fixtures (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25375\"\u003e#25375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ban \u003ccode\u003epytest\u003c/code\u003e autouse fixtures (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25477\"\u003e#25477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Add \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e automatically (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23259\"\u003e#23259\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix diagnostic when \u003ccode\u003eruff:enable\u003c/code\u003e or \u003ccode\u003eruff:disable\u003c/code\u003e appears where \u003ccode\u003eruff:ignore\u003c/code\u003e is expected (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25700\"\u003e#25700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Preserve leading empty literals to avoid syntax errors (\u003ccode\u003eUP032\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25491\"\u003e#25491\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-pytest-style\u003c/code\u003e] Clarify diagnostic message for single parameters (\u003ccode\u003ePT007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25592\"\u003e#25592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003enumpy\u003c/code\u003e] Drop autofix for \u003ccode\u003enp.in1d\u003c/code\u003e (\u003ccode\u003eNPY201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25612\"\u003e#25612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Exempt Python version comparisons (\u003ccode\u003ePLR2004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25743\"\u003e#25743\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReserve AST \u003ccode\u003eVec\u003c/code\u003es with correct...\n\n_Description has been truncated_","html_url":"https://github.com/sailfishos-mirror/sphinx/pull/217","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sailfishos-mirror%2Fsphinx/issues/217","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/217/packages"},{"uuid":"4576228537","node_id":"PR_kwDOMmoEl87iCJtt","number":1687,"state":"closed","title":"⬆️ Bump pyrefly from 0.63.1 to 1.0.0 in the actions group","user":"dependabot[bot]","labels":["topic: dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-03T08:18:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-03T01:44:14.000Z","updated_at":"2026-06-03T08:18:36.000Z","time_to_close":23652,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"⬆️ Bump","packages":[{"name":"pyrefly","old_version":"0.63.1","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":"the actions group","ecosystem":"pip"},"body":"Bumps the actions group with 1 update: [pyrefly](https://github.com/facebook/pyrefly).\n\nUpdates `pyrefly` from 0.63.1 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.1...1.0.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.63.1\u0026new-version=1.0.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 \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/scipy/scipy-stubs/pull/1687","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipy%2Fscipy-stubs/issues/1687","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1687/packages"},{"uuid":"4529077439","node_id":"PR_kwDORvGpa87fp4zJ","number":41,"state":"open","title":"Chore(deps): Bump the major-versions group across 1 directory with 6 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-27T02:51:51.000Z","updated_at":"2026-05-27T02:51:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"major-versions","update_count":6,"packages":[{"name":"django","old_version":"5.2.12","new_version":"5.2.14","repository_url":"https://github.com/django/django"},{"name":"mypy","old_version":"1.19.1","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.55.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"types-pytz","old_version":"2025.2.0.20251108","new_version":"2026.2.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"80.10.0.20260124","new_version":"82.0.0.20260518","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the major-versions group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `5.2.12` | `5.2.14` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.1.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.55.0` | `1.0.0` |\n| [types-pytz](https://github.com/python/typeshed) | `2025.2.0.20251108` | `2026.2.0.20260518` |\n| [types-setuptools](https://github.com/python/typeshed) | `80.10.0.20260124` | `82.0.0.20260518` |\n\n\nUpdates `django` from 5.2.12 to 5.2.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/024c26b1e77ea5b1b158265167ade47927a64c06\"\u003e\u003ccode\u003e024c26b\u003c/code\u003e\u003c/a\u003e [5.2.x] Bumped version for 5.2.14 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2115d4eaee15107f5cd290d7cfcc5ffe3ad43661\"\u003e\u003ccode\u003e2115d4e\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-6907 -- Prevented caching of requests when Vary header...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/47cf968c125e3fab317e10fe150ec479e745f995\"\u003e\u003ccode\u003e47cf968\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-35192 -- Ensured Vary header is sent when setting sess...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2ec27eda3ba6c14f0856e6e3eb1df07c41fd95e6\"\u003e\u003ccode\u003e2ec27ed\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-5766 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE in Memory...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ed18840c8cd1be81fdb3955cbfc9459989d6df68\"\u003e\u003ccode\u003eed18840\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed typo in stub release notes for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/de3f622b7fa72aee68650f15263f2788b626680a\"\u003e\u003ccode\u003ede3f622\u003c/code\u003e\u003c/a\u003e [5.2.x] Added stub release notes and release date for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fb61c8a6e902abc885048a1a78592a4bd4329f87\"\u003e\u003ccode\u003efb61c8a\u003c/code\u003e\u003c/a\u003e [5.2.x] Refs CVE-2026-4292 -- Isolated new test in AdminViewListEditable.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/bd1a7583061a96059ea560eb7b59bebce4240778\"\u003e\u003ccode\u003ebd1a758\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed two issues in release helper scripts/verify_release.sh.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/da57aaad76e674fdb01b741974acf229d3ac4132\"\u003e\u003ccode\u003eda57aaa\u003c/code\u003e\u003c/a\u003e [5.2.x] Added CVE-2026-3902, CVE-2026-4277, CVE-2026-4292, CVE-2026-33033, an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9a8bdbc4839a442b1a0453bd8ed38def4776139\"\u003e\u003ccode\u003ec9a8bdb\u003c/code\u003e\u003c/a\u003e [5.2.x] Post-release version bump.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/5.2.12...5.2.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges to Messages\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7\"\u003e\u003ccode\u003e74df14b\u003c/code\u003e\u003c/a\u003e Add changelog for mypy 2.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff\"\u003e\u003ccode\u003e022d9bc\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;TypeForm: Enable by default (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21262\"\u003e#21262\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c\"\u003e\u003ccode\u003e8826288\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt.random (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21463\"\u003e#21463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96\"\u003e\u003ccode\u003e3f4067b\u003c/code\u003e\u003c/a\u003e Bump librt version to 0.11.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21458\"\u003e#21458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e\"\u003e\u003ccode\u003e2b1eb58\u003c/code\u003e\u003c/a\u003e [mypyc] Enable incremental self-compilation (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21369\"\u003e#21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc\"\u003e\u003ccode\u003e8152f4a\u003c/code\u003e\u003c/a\u003e Respect file config comments for stale modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21444\"\u003e#21444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92\"\u003e\u003ccode\u003e116d60b\u003c/code\u003e\u003c/a\u003e Fix nondeterminism from nonassociativity of overload joins (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210\"\u003e\u003ccode\u003e6c4af8e\u003c/code\u003e\u003c/a\u003e Fix function call message change for small number of args (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21432\"\u003e#21432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800\"\u003e\u003ccode\u003e4b8fdca\u003c/code\u003e\u003c/a\u003e [mypyc] Add librt.random module (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21433\"\u003e#21433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.55.0 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.55.0...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-channels` from 4.3.0.20250822 to 4.3.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pytz` from 2025.2.0.20251108 to 2026.2.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 80.10.0.20260124 to 82.0.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/edsanpemc/paperless-ngx/pull/41","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsanpemc%2Fpaperless-ngx/issues/41","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/41/packages"},{"uuid":"4490176442","node_id":"PR_kwDOMmoEl87dtqkW","number":1603,"state":"closed","title":"⬆️ Bump pyrefly from 0.63.1 to 1.0.0 in the actions group","user":"dependabot[bot]","labels":["topic: dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-20T22:03:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-20T21:54:31.000Z","updated_at":"2026-05-20T22:03:57.000Z","time_to_close":556,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"⬆️ Bump","packages":[{"name":"pyrefly","old_version":"0.63.1","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":"the actions group","ecosystem":"pip"},"body":"Bumps the actions group with 1 update: [pyrefly](https://github.com/facebook/pyrefly).\n\nUpdates `pyrefly` from 0.63.1 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.1...1.0.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.63.1\u0026new-version=1.0.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 \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/scipy/scipy-stubs/pull/1603","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipy%2Fscipy-stubs/issues/1603","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1603/packages"},{"uuid":"4458632316","node_id":"PR_kwDOQcsJgc7cJqRc","number":126,"state":"open","title":"chore(deps):(deps-dev): bump pyrefly from 0.64.1 to 1.0.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-16T05:03:32.000Z","updated_at":"2026-05-16T05:03:33.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps):(deps-dev)","packages":[{"name":"pyrefly","old_version":"0.64.1","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.64.1 to 1.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.1...1.0.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.64.1\u0026new-version=1.0.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)\n\n\n\u003c/details\u003e","html_url":"https://github.com/BrianLusina/image-research-assistant/pull/126","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianLusina%2Fimage-research-assistant/issues/126","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/126/packages"},{"uuid":"4451031951","node_id":"PR_kwDOSEb-G87bxRkZ","number":27,"state":"closed","title":"Bump the dev group across 1 directory with 43 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-22T03:26:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-15T03:38:47.000Z","updated_at":"2026-05-22T03:26:49.000Z","time_to_close":604080,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dev","update_count":43,"packages":[{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"faker","old_version":"40.13.0","new_version":"40.18.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.39.0","new_version":"1.39.4","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.10","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-aiofiles","old_version":"25.1.0.20260409","new_version":"25.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260408","new_version":"7.0.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20260408","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20260408","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260408","new_version":"1.3.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260408","new_version":"0.22.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20260408","new_version":"6.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20260408","new_version":"4.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"26.4.0.20260409","new_version":"26.4.0.20260512","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.4.0.20260409","new_version":"3.5.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20260408","new_version":"1.1.11.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260408","new_version":"3.10.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20260408","new_version":"3.3.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20260408","new_version":"3.6.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20260408","new_version":"0.47.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260408","new_version":"3.1.5.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260408","new_version":"4.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"7.34.1.20260408","new_version":"7.34.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260408","new_version":"7.2.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260408","new_version":"2.9.21.20260509","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.20.0.20260408","new_version":"2.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20260408","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260408","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260408","new_version":"311.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20260408","new_version":"6.0.12.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.4.4.20260408","new_version":"2026.5.9.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20260408","new_version":"2.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20260408","new_version":"3.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260408","new_version":"2.18.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260408","new_version":"4.67.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.88","new_version":"1.43.8","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260408","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.12","new_version":"6.152.7","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260408","new_version":"2.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260408","new_version":"82.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.17.1.3","new_version":"1.17.1.4","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.20.1","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.60.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 43 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [faker](https://github.com/joke2k/faker) | `40.13.0` | `40.18.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.39.0` | `1.39.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.10` | `0.15.13` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20260409` | `25.1.0.20260508` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260408` | `7.0.0.20260503` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20260408` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20260408` | `0.7.0.20260504` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260408` | `1.3.1.20260508` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260408` | `0.22.3.20260508` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20260408` | `6.0.0.20260508` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20260408` | `4.1.0.20260508` |\n| [types-gevent](https://github.com/python/typeshed) | `26.4.0.20260409` | `26.4.0.20260512` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.4.0.20260409` | `3.5.0.20260508` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20260408` | `1.1.11.20260508` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260408` | `3.10.2.20260508` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20260408` | `3.3.0.20260508` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20260408` | `3.6.0.20260508` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20260408` | `0.47.0.20260508` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260408` | `3.1.5.20260508` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260408` | `4.9.0.20260508` |\n| [types-protobuf](https://github.com/python/typeshed) | `7.34.1.20260408` | `7.34.1.20260508` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260408` | `7.2.2.20260508` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260408` | `2.9.21.20260509` |\n| [types-pygments](https://github.com/python/typeshed) | `2.20.0.20260408` | `2.20.0.20260508` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20260408` | `1.1.0.20260508` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260408` | `2.9.0.20260508` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260408` | `311.0.0.20260508` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260408` | `6.0.12.20260510` |\n| [types-regex](https://github.com/python/typeshed) | `2026.4.4.20260408` | `2026.5.9.20260510` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20260408` | `2.1.0.20260508` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20260408` | `3.20.0.20260508` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260408` | `2.18.0.20260508` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260408` | `4.67.3.20260508` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.88` | `1.43.8` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260408` | `1.1.0.20260508` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.12` | `6.152.7` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260408` | `2.0.0.20260508` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260408` | `82.0.0.20260508` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.17.1.3` | `1.17.1.4` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.20.1` | `2.1.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.60.0` | `1.0.0` |\n\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.18.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.18.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.17.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.17.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.16.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.16.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/v40.18.0/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.17.0...v40.18.0\"\u003ev40.18.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd automotive providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales. Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ephone_number\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales. Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.16.0...v40.17.0\"\u003ev40.17.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eam_ET\u003c/code\u003e \u003ccode\u003ephone_number\u003c/code\u003e provider for Ethiopia. Thanks \u003ca href=\"https://github.com/jasur-py\"\u003e\u003ccode\u003e@​jasur-py\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.15.0...v40.16.0\"\u003ev40.16.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicate phone number prefix \u003ccode\u003e145\u003c/code\u003e in \u003ccode\u003ezh_CN\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/r266-tec\"\u003e\u003ccode\u003e@​r266-tec\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/7a79d1b815c72cdd570e47002a1d6d90b8282bef\"\u003e\u003ccode\u003e7a79d1b\u003c/code\u003e\u003c/a\u003e Bump version: 40.17.0 → 40.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/22334a6867869f87f174a168e0c1783241b23bb4\"\u003e\u003ccode\u003e22334a6\u003c/code\u003e\u003c/a\u003e :pencil: Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/8a7fa46a337e01eba9ec1c1af51e740d60940f1d\"\u003e\u003ccode\u003e8a7fa46\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a70229ebf3abb0e2e44529e884bbe3d5aec9be8a\"\u003e\u003ccode\u003ea70229e\u003c/code\u003e\u003c/a\u003e Add automotive providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2346\"\u003e#2346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/9dc592c21400f42a488e87850e30856a14ab4bd2\"\u003e\u003ccode\u003e9dc592c\u003c/code\u003e\u003c/a\u003e add \u003ccode\u003ephone_number\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2338\"\u003e#2338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/7e8ec9c8c60679e404b5ca647a207168832c8ba4\"\u003e\u003ccode\u003e7e8ec9c\u003c/code\u003e\u003c/a\u003e Bump version: 40.16.0 → 40.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/48fbd622669263bcbd2b822568a830512948d365\"\u003e\u003ccode\u003e48fbd62\u003c/code\u003e\u003c/a\u003e :pencil: Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/696ebf93a8310d621d6dd90426844de023d9ef50\"\u003e\u003ccode\u003e696ebf9\u003c/code\u003e\u003c/a\u003e :lipstick: Format code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c339633949b44f5ab3c34d1b2046acddfae7e39\"\u003e\u003ccode\u003e0c33963\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eam_ET\u003c/code\u003e \u003ccode\u003ephone_number\u003c/code\u003e provider for Ethiopia (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2353\"\u003e#2353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bec4ec21e9a75056e1fcf250d5aebcf22a415ca1\"\u003e\u003ccode\u003ebec4ec2\u003c/code\u003e\u003c/a\u003e :pencil: fix changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.39.0 to 1.39.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b058a6450c9f2a720257f56a1f7ed8a4cdf33a15\"\u003e\u003ccode\u003eb058a64\u003c/code\u003e\u003c/a\u003e 1.39.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5e1f1fb60ff9f646a0d039e3070a0abb75e9db6a\"\u003e\u003ccode\u003e5e1f1fb\u003c/code\u003e\u003c/a\u003e Fix: treat  \u003ccode\u003emap\u003c/code\u003e \u0026amp; \u003ccode\u003efilter\u003c/code\u003e as not subscriptable at runtime and don't show g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/f9730a824e91dd75c3871bc894ee0d73bec682a9\"\u003e\u003ccode\u003ef9730a8\u003c/code\u003e\u003c/a\u003e bump python dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/a465682f20214a43fff4f3e82d02b74d322e6e3e\"\u003e\u003ccode\u003ea465682\u003c/code\u003e\u003c/a\u003e Update installation docs for PyCharm (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1643\"\u003e#1643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5f6672701c5b6a739563894256418845239be2a2\"\u003e\u003ccode\u003e5f66727\u003c/code\u003e\u003c/a\u003e 1.39.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/d8741dfc88be16e11c66cceff78e6e2634ddf49b\"\u003e\u003ccode\u003ed8741df\u003c/code\u003e\u003c/a\u003e hopefully fix docs deployment job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ceb200c192bb53629b4c62fdc082ec27b108f316\"\u003e\u003ccode\u003eceb200c\u003c/code\u003e\u003c/a\u003e 1.39.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eb7a92cacd2697acb4e36e2f3147333588c88fa7\"\u003e\u003ccode\u003eeb7a92c\u003c/code\u003e\u003c/a\u003e try to fix browser-basedpyright being published with nothing in it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/dec5306e9aabbce3f9b1b9ec283981d92dd43d80\"\u003e\u003ccode\u003edec5306\u003c/code\u003e\u003c/a\u003e update package-lock.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.39.0...v1.39.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.10 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.10...0.15.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20260409 to 25.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260408 to 7.0.0.20260503\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20260408 to 0.4.15.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20260408 to 0.7.0.20260504\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260408 to 1.3.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260408 to 0.22.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20260408 to 6.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20260408 to 4.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 26.4.0.20260409 to 26.4.0.20260512\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.4.0.20260409 to 3.5.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20260408 to 1.1.11.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260408 to 3.10.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20260408 to 3.3.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20260408 to 3.6.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20260408 to 0.47.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260408 to 3.1.5.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260408 to 4.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 7.34.1.20260408 to 7.34.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260408 to 7.2.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260408 to 2.9.21.20260509\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.20.0.20260408 to 2.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20260408 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260408 to 2.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260408 to 311.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20260408 to 6.0.12.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.4.4.20260408 to 2026.5.9.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20260408 to 2.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20260408 to 3.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260408 to 2.18.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.3.20260408 to 4.67.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.42.88 to 1.43.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.1.0.20260408 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.12 to 6.152.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.7\u003c/h2\u003e\n\u003cp\u003eThis patch improves our type hints for \u0026quot;.filter()\u0026quot; to work with\n\u0026quot;typing.TypeGuard\u0026quot;. For example:\u003c/p\u003e\n\u003cp\u003efrom typing import TypeGuard\u003c/p\u003e\n\u003cp\u003efrom hypothesis import strategies as st\u003c/p\u003e\n\u003cp\u003edef is_str(x: object) -\u0026gt; TypeGuard[str]:\nreturn isinstance(x, str)\u003c/p\u003e\n\u003cp\u003es = st.from_type(object).filter(is_str)\u003c/p\u003e\n\u003ch1\u003epreviously: SearchStrategy[object]\u003c/h1\u003e\n\u003ch1\u003enow: SearchStrategy[str]\u003c/h1\u003e\n\u003cp\u003ereveal_type(s)\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-7\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.6\u003c/h2\u003e\n\u003cp\u003eThis patch adds a shrinking pass that tries natural text\ntransformations - unicode decomposition (NFD/NFKD) and case mapping -\non individual characters in string choices.  Failures involving e.g.\n\u0026quot;\u0026quot;À\u0026quot; != \u0026quot;À\u0026quot;.lower()\u0026quot; will now reliably shrink to \u0026quot;\u0026quot;A\u0026quot;\u0026quot; rather than\nsometimes getting stuck on the high-codepoint accented form (issue\n\u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4725\"\u003e#4725\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-6\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.5\u003c/h2\u003e\n\u003cp\u003eThis patch improves the \u0026quot;Phase.explain\u0026quot; phase so that simple cases\nlike \u0026quot;assert n1 == n2\u0026quot; no longer get a misleading \u0026quot;# or any other\ngenerated value\u0026quot; comment (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4715\"\u003e#4715\u003c/a\u003e). Before falling back to random\nsampling, we now also try borrowing values from each other arg slice\nwith matching shape.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-5\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.4\u003c/h2\u003e\n\u003cp\u003eThis patch fixes a rare internal error during \u0026quot;Phase.explain\u0026quot;\nintroduced in version 6.149.0 for certain strategies (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4708\"\u003e#4708\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-4\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.3\u003c/h2\u003e\n\u003cp\u003eThe \u0026quot;hypothesis-urandom\u0026quot; backend now reads from \u0026quot;/dev/urandom\u0026quot; with\nbuffering disabled, which improves the control of those hooking\n\u0026quot;/dev/urandom\u0026quot; to change or read Hypothesis's random decisions.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-3\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/adc8d2d4d3dbdbc640d00e216782ef5dd3611640\"\u003e\u003ccode\u003eadc8d2d\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.7 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d66ce67fed6cf77dd8bc14fb88f2d97d027458c4\"\u003e\u003ccode\u003ed66ce67\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4672\"\u003e#4672\u003c/a\u003e from CharString/annotate-filter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/df889578276ee8624e95692ba8f0a57b0a04c487\"\u003e\u003ccode\u003edf88957\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4727\"\u003e#4727\u003c/a\u003e from hettlage/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/415443cd82dcd389d398a7f36ebf41ea6162a7d6\"\u003e\u003ccode\u003e415443c\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/bfd0ebfe74bcfc0447498259ec008c0fa13ee976\"\u003e\u003ccode\u003ebfd0ebf\u003c/code\u003e\u003c/a\u003e Revert RELEASE.rst to original version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/492f8185f80935a6cfc26e0c54bc9f5aed882c80\"\u003e\u003ccode\u003e492f818\u003c/code\u003e\u003c/a\u003e attempt to de-flake test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/55ab356dc1b96b59821db851ebce3bdf483c2eb6\"\u003e\u003ccode\u003e55ab356\u003c/code\u003e\u003c/a\u003e fix release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7fd8e506efc43ce9b0d19993fc2cf8eb759d273f\"\u003e\u003ccode\u003e7fd8e50\u003c/code\u003e\u003c/a\u003e simplify type hints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c8b952ed27af8aa7f5fcc90c136f4dfff649adc7\"\u003e\u003ccode\u003ec8b952e\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into annotate-filter-4672\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/b2e8d8968eb3fd85391febfe96ea24703faf23a9\"\u003e\u003ccode\u003eb2e8d89\u003c/code\u003e\u003c/a\u003e add tests and release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.12...hypothesis-python-6.152.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260408 to 2.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260408 to 82.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.17.1.3 to 1.17.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.4\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eapprox_fprime\u003c/code\u003e and \u003ccode\u003enewton\u003c/code\u003e to accept functions returning n-D arrays in \u003ccode\u003escipy.optimize\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e✨ Improved shape-typing support for statistical testing functions in \u003ccode\u003escipy.stats\u003c/code\u003e and FFT shifting functions in \u003ccode\u003escipy.fft\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒️ Enforce \u003ca href=\"https://github.com/zizmorcore/zizmor\"\u003ezizmor\u003c/a\u003e to improve security in GitHub Actions and dependabot (guard against supply-chain attacks, cache poisoning, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_signal_api\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1492\"\u003escipy/scipy-stubs#1492\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_delegators\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1493\"\u003escipy/scipy-stubs#1493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eks_2samp\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1494\"\u003escipy/scipy-stubs#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ebrunnermunzel\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1497\"\u003escipy/scipy-stubs#1497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ef_oneway\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1499\"\u003escipy/scipy-stubs#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ekruskal\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1500\"\u003escipy/scipy-stubs#1500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003esigmaclip\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1501\"\u003escipy/scipy-stubs#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efftpack\u003c/code\u003e: improve return dtypes for real transforms by \u003ca href=\"https://github.com/Deshan-5\"\u003e\u003ccode\u003e@​Deshan-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1509\"\u003escipy/scipy-stubs#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improve \u003ccode\u003elp2{lp,hp,bp,bs}[_zpk]\u003c/code\u003e and \u003ccode\u003ebilinear_zpk\u003c/code\u003e by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1523\"\u003escipy/scipy-stubs#1523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats.dunnett\u003c/code\u003e: support for \u003ccode\u003elongdouble\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1528\"\u003escipy/scipy-stubs#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1532\"\u003escipy/scipy-stubs#1532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e_lib._uarray._backend\u003c/code\u003e: fix \u003ccode\u003ewrap_single_convertor[_instance]\u003c/code\u003e overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1481\"\u003escipy/scipy-stubs#1481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: add vector-valued \u003ccode\u003eapprox_fprime\u003c/code\u003e overload by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1530\"\u003escipy/scipy-stubs#1530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003e[i]fftshift\u003c/code\u003e dtype preservation for int and bool inputs by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1533\"\u003escipy/scipy-stubs#1533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: generalize \u003ccode\u003enewton\u003c/code\u003e overloads to ND arrays by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1534\"\u003escipy/scipy-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e↪️ Workarounds\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: improve CSC and CSR array/matrix constructor compatibility with mypy by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1485\"\u003escipy/scipy-stubs#1485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Monad to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1498\"\u003escipy/scipy-stubs#1498\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Maintenance\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e🔖 prepare for further development by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1480\"\u003escipy/scipy-stubs#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update uv-build requirement from \u0026lt;0.11,\u0026gt;=0.10.9 to \u0026gt;=0.10.9,\u0026lt;0.12 in the actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1482\"\u003escipy/scipy-stubs#1482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ ty 0.0.25 by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1483\"\u003escipy/scipy-stubs#1483\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/ff66e8a4a3b9fec77d32193965e4ad3d9acfea84\"\u003e\u003ccode\u003eff66e8a\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/1ba8ccfa1942dff275792fc486656e3fe12f4ee6\"\u003e\u003ccode\u003e1ba8ccf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1546\"\u003e#1546\u003c/a\u003e from scipy/fix-mypy_primer-comment-workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4beb7de3cc744f24a0f017b81b9a58202e8e9aa\"\u003e\u003ccode\u003eb4beb7d\u003c/code\u003e\u003c/a\u003e 💚 fix mypy_primer comment workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/74945653316a671d475f06f86520f378f3c420b9\"\u003e\u003ccode\u003e7494565\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1545\"\u003e#1545\u003c/a\u003e from scipy/bump-mypy-pyrefly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/12f0735b88e3fe47860b2e4f9a5074a277e0cf50\"\u003e\u003ccode\u003e12f0735\u003c/code\u003e\u003c/a\u003e ⬆️ mypy 1.20.1 and pyrefly 0.60.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b9efc6fb754a4be43ffd7443713f744e419951bf\"\u003e\u003ccode\u003eb9efc6f\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support (\u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/009d10ed67d5e8d3657750bb455d7b7a2cdd8496\"\u003e\u003ccode\u003e009d10e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1544\"\u003e#1544\u003c/a\u003e from scipy/zizmor/update_dprint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cac2b4a50fcc32a7dbd68742d20fc85b05570cca\"\u003e\u003ccode\u003ecac2b4a\u003c/code\u003e\u003c/a\u003e 🔒️ fix zizmor \u003ccode\u003e--pedantic\u003c/code\u003e audits in \u003ccode\u003eupdate_dprint.yml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cab3222674d15ce35370a8852d541439131e6035\"\u003e\u003ccode\u003ecab3222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1543\"\u003e#1543\u003c/a\u003e from scipy/zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/483a2d3d7b95b5cda285ac4788ec66008e06852b\"\u003e\u003ccode\u003e483a2d3\u003c/code\u003e\u003c/a\u003e 💡 ignore zizmor error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.17.1.3...v1.17.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.20.1 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges to Messages\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7\"\u003e\u003ccode\u003e74df14b\u003c/code\u003e\u003c/a\u003e Add changelog for mypy 2.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff\"\u003e\u003ccode\u003e022d9bc\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;TypeForm: Enable by default (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21262\"\u003e#21262\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c\"\u003e\u003ccode\u003e8826288\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt.random (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21463\"\u003e#21463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96\"\u003e\u003ccode\u003e3f4067b\u003c/code\u003e\u003c/a\u003e Bump librt version to 0.11.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21458\"\u003e#21458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e\"\u003e\u003ccode\u003e2b1eb58\u003c/code\u003e\u003c/a\u003e [mypyc] Enable incremental self-compilation (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21369\"\u003e#21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc\"\u003e\u003ccode\u003e8152f4a\u003c/code\u003e\u003c/a\u003e Respect file config comments for stale modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21444\"\u003e#21444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92\"\u003e\u003ccode\u003e116d60b\u003c/code\u003e\u003c/a\u003e Fix nondeterminism from nonassociativity of overload joins (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210\"\u003e\u003ccode\u003e6c4af8e\u003c/code\u003e\u003c/a\u003e Fix function call message change for small number of args (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21432\"\u003e#21432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800\"\u003e\u003ccode\u003e4b8fdca\u003c/code\u003e\u003c/a\u003e [mypyc] Add librt.random module (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21433\"\u003e#21433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.60.0 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.0...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/NH3CH2COOH/dify-for-adaption/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/NH3CH2COOH%2Fdify-for-adaption/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"},{"uuid":"4440163919","node_id":"PR_kwDOMmoEl87bO5bO","number":1594,"state":"closed","title":"⬆️ Bump pyrefly from 0.63.1 to 0.64.0 in the actions group","user":"dependabot[bot]","labels":["topic: dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-13T18:11:49.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-13T18:10:35.000Z","updated_at":"2026-05-13T18:11:58.000Z","time_to_close":74,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"⬆️ Bump","packages":[{"name":"pyrefly","old_version":"0.63.1","new_version":"0.64.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":"the actions group","ecosystem":"pip"},"body":"Bumps the actions group with 1 update: [pyrefly](https://github.com/facebook/pyrefly).\n\nUpdates `pyrefly` from 0.63.1 to 0.64.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: May 05, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.64.0 bundles \u003cstrong\u003e190 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- You can now pass generic or overloaded callables to higher-order functions and Pyrefly will preserve their structure in the return type. For example, \u003ccode\u003eidentity(identity)\u003c/code\u003e now correctly returns a generic callable instead of degrading to \u003ccode\u003eUnknown\u003c/code\u003e. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Same-scope class rebinds (like \u003ccode\u003eReal = Dummy\u003c/code\u003e after \u003ccode\u003eclass Real\u003c/code\u003e) are now checked against the original class as if it were an implicit \u003ccode\u003etype[Real]\u003c/code\u003e annotation, preventing silent type changes and fixing spurious constructor-call errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Generic classes with missing type arguments in lax mode now default to \u003ccode\u003eAny\u003c/code\u003e instead of raising variance errors, improving consistency with how we handle other incomplete types. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pydantic \u003ccode\u003efield_validator\u003c/code\u003e decorators with \u003ccode\u003emode='before'\u003c/code\u003e and \u003ccode\u003emode='plain'\u003c/code\u003e are now supported, allowing validators to accept broader input types before coercion. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Spurious unpack diagnostics are no longer emitted when the right-hand side involves \u003ccode\u003eNever\u003c/code\u003e (e.g. \u003ccode\u003ea, b, c = never()\u003c/code\u003e or \u003ccode\u003ea, b = (never(), 1)\u003c/code\u003e). The unpack solver is now \u003ccode\u003eNever\u003c/code\u003e-aware, recognizing that the producing expression cannot complete and any error message at the unpack site would be misleading. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- \u003ccode\u003eassert\u003c/code\u003e statements now check that \u003ccode\u003e__bool__\u003c/code\u003e is callable on the test expression, matching the behavior already in place for \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions (and aligning with mypy and pyright).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The language server now advertises both \u003ccode\u003esource.fixAll\u003c/code\u003e and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e code action kinds, enabling selective fix-on-save configuration across editors that implement the LSP protocol. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Document highlights now correctly distinguish between read and write references, setting \u003ccode\u003eDocumentHighlightKind::WRITE\u003c/code\u003e for assignments and declarations. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Go-to-definition on relative imports in site-packages files now correctly resolves to the package source instead of returning null when a \u003ccode\u003epyproject.toml\u003c/code\u003e exists at the project root. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Notebook cell index resolution has been fixed to prevent mismatches between code cells and markdown cells, eliminating panics and incorrect byte offset calculations in Jupyter notebooks. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Cross-module \u0026quot;find references\u0026quot; (external references) is now enabled by default, returning references across the entire project rather than just the current file. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new quick fix turns the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members into a code action that replaces the offending string literal with the proper enum member access. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003e# pyrefly: ignore\u003c/code\u003e quick fix inserts a suppression comment for the diagnostic at the cursor, automatically merging into an existing pyrefly-ignore directive on the same line or on a comment-only line above when present. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Numeric parameter defaults now preserve their source spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e, \u003ccode\u003e0xFF\u003c/code\u003e, \u003ccode\u003e0b101\u003c/code\u003e) in hover and signature display rather than being normalized to decimal. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Code actions documentation has been added to the IDE Supported Features page, covering quick fixes and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e configuration.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOnboarding \u0026amp; VS Code Extension\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A redesigned unconfigured-project experience: when no \u003ccode\u003epyrefly.toml\u003c/code\u003e is found, Pyrefly auto-detects nearby \u003ccode\u003emypy.ini\u003c/code\u003e, \u003ccode\u003epyrightconfig.json\u003c/code\u003e, or \u003ccode\u003e[tool.mypy]\u003c/code\u003e/\u003ccode\u003e[tool.pyright]\u003c/code\u003e sections in \u003ccode\u003epyproject.toml\u003c/code\u003e and synthesizes an in-memory configuration migrated from those settings (using the \u003ccode\u003elegacy\u003c/code\u003e or \u003ccode\u003edefault\u003c/code\u003e preset respectively). With no detectable configuration, the new \u003ccode\u003ebasic\u003c/code\u003e preset is used. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.typeCheckingMode\u003c/code\u003e workspace setting (auto / off / basic / legacy / default / strict, default \u003ccode\u003eauto\u003c/code\u003e) lets users pick a preset for files not covered by an explicit Pyrefly configuration, directly from the VS Code settings UI. The legacy \u003ccode\u003epython.pyrefly.displayTypeErrors\u003c/code\u003e setting is now deprecated, with values transparently mapped to the new model. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.disableTypeErrors\u003c/code\u003e workspace setting provides a clean per-workspace kill switch for diagnostics, independent of the type-checking mode. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The VS Code status bar has been redesigned: it now shows the active preset (e.g. \u0026quot;Pyrefly (Legacy)\u0026quot;, \u0026quot;Pyrefly (Basic)\u0026quot;) and the tooltip explains why that preset was chosen and links to the relevant docs. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- After a \u003ccode\u003epyrefly check\u003c/code\u003e on an unconfigured project, the CLI now prints a short upsell to \u003cstrong\u003estderr\u003c/strong\u003e explaining what configuration was synthesized and pointing at \u003ccode\u003epyrefly init\u003c/code\u003e. The message is routed to stderr so machine-readable stdout formats (e.g. \u003ccode\u003e--output-format json\u003c/code\u003e) remain untouched.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Configuration presets (\u003ccode\u003eoff\u003c/code\u003e, \u003ccode\u003ebasic\u003c/code\u003e, \u003ccode\u003elegacy\u003c/code\u003e, \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003estrict\u003c/code\u003e) are now available via the \u003ccode\u003epreset\u003c/code\u003e option, providing named collections of error severities and behavior settings as a base configuration that user settings can override. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003elegacy\u003c/code\u003e preset is now used by \u003ccode\u003epyrefly init\u003c/code\u003e for mypy migration, disabling checks mypy doesn't have and setting looser inference defaults. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eimplicit-any\u003c/code\u003e error code has been split into sub-kinds (\u003ccode\u003eimplicit-any-attribute\u003c/code\u003e, \u003ccode\u003eimplicit-any-empty-container\u003c/code\u003e, \u003ccode\u003eimplicit-any-parameter\u003c/code\u003e, \u003ccode\u003eimplicit-any-type-argument\u003c/code\u003e) with \u003ccode\u003eimplicit-any\u003c/code\u003e as the parent, allowing finer-grained control over where implicit \u003ccode\u003eAny\u003c/code\u003e is flagged. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eunbound-name\u003c/code\u003e error is now disabled in the \u003ccode\u003elegacy\u003c/code\u003e preset to match mypy's default behavior, which does not flag possibly-undefined variables.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Reporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eincompatible-overload-residual\u003c/code\u003e error kind has been introduced for cases where all branches of an overloaded callable are pruned during higher-order function analysis, making it easier to configure these errors independently. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Error messages for all-pruned overload residuals now describe the incompatibility in terms of \u0026quot;solved type variables\u0026quot; rather than \u0026quot;solved type constraints\u0026quot; for better clarity. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003epyrefly suppress\u003c/code\u003e command now correctly handles removal of unused ignores via the \u003ccode\u003e--remove-unused\u003c/code\u003e flag, which was previously broken.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eFactory Boy Support\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Pyrefly now infers the correct model return types for \u003ccode\u003ecreate()\u003c/code\u003e, \u003ccode\u003ebuild()\u003c/code\u003e, \u003ccode\u003ecreate_batch()\u003c/code\u003e, and \u003ccode\u003ebuild_batch()\u003c/code\u003e methods on \u003ccode\u003eDjangoModelFactory\u003c/code\u003e subclasses by reading the inner \u003ccode\u003eMeta.model\u003c/code\u003e attribute. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- False-positive \u003ccode\u003ebad-override\u003c/code\u003e errors on the inner \u003ccode\u003eMeta\u003c/code\u003e class in factory-boy factories are now suppressed, matching how we handle Django and Marshmallow.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The \u003ccode\u003epyrefly report\u003c/code\u003e JSON output now includes a \u003ccode\u003epath\u003c/code\u003e field on each \u003ccode\u003eModuleReport\u003c/code\u003e, for compatibility with typestats and similar tooling.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Deeply-nested dict literals no longer cause exponential memory growth during type inference. A depth-25 dict literal that previously consumed ~7.7 GB now uses ~239 MB by computing the union of field types on demand instead of storing it redundantly. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Callable residual finalization has been optimized to avoid redundant type cloning and traversals, reducing memory churn in attribute-heavy code. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Eliminated some bugs that caused Pyrefly to unnecessarily analyze dependencies, improving latency and memory use, especially in the IDE.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e15\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3057\"\u003e#3057\u003c/a\u003e: Fixed an issue where string concatenation with the \u003ccode\u003e+\u003c/code\u003e operator was incorrectly flagging \u003ccode\u003estr\u003c/code\u003e as not assignable to \u003ccode\u003eLiteralString\u003c/code\u003e attributes. Pyrefly now preserves \u003ccode\u003eLiteralString\u003c/code\u003e style when adding two explicit string literals and uses implicit style otherwise.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/105\"\u003e#105\u003c/a\u003e: Fixed premature type pinning in function calls where arguments were incorrectly narrowed before all constraints were solved. For example, \u003ccode\u003efoo(x, y)\u003c/code\u003e with \u003ccode\u003ex: int | None\u003c/code\u003e and \u003ccode\u003ey: int | None\u003c/code\u003e no longer incorrectly narrows \u003ccode\u003ex\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e when passed to a generic \u003ccode\u003efoo[T](https://github.com/facebook/pyrefly/blob/HEAD/a: T, b: T)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3198\"\u003e#3198\u003c/a\u003e: Fixed \u003ccode\u003epyrefly suppress --remove-unused\u003c/code\u003e which was not actually removing unused error suppressions. The command now correctly processes the \u003ccode\u003e--remove-unused\u003c/code\u003e flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3024\"\u003e#3024\u003c/a\u003e: The language server now advertises \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e in addition to \u003ccode\u003esource.fixAll\u003c/code\u003e, allowing users to selectively enable or disable Pyrefly's fix-all actions in editors that support LSP code action kinds.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2819\"\u003e#2819\u003c/a\u003e: Fixed incorrect variance errors when using generic classes like Pydantic's \u003ccode\u003eRootModel\u003c/code\u003e in lax mode. Missing type arguments now degrade to \u003ccode\u003eAny\u003c/code\u003e instead of raising errors, matching our handling of other incomplete types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3000\"\u003e#3000\u003c/a\u003e: Fixed \u0026quot;find references\u0026quot; failures in Cursor and other editors caused by relative imports in site-packages not resolving correctly when a \u003ccode\u003epyproject.toml\u003c/code\u003e existed at the project root.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2563\"\u003e#2563\u003c/a\u003e: Fixed go-to-definition on relative imports in virtual environment site-packages, which was returning null because the project root's import path was matching before the more specific site-package prefix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3193\"\u003e#3193\u003c/a\u003e: Fixed an error where \u003ccode\u003elist[\u0026quot;A|B\u0026quot;]\u003c/code\u003e was incorrectly rejected as \u003ccode\u003enot-a-type\u003c/code\u003e. Type argument subscripts are now bound as type expressions even in value context, allowing forward-ref strings to be parsed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3286\"\u003e#3286\u003c/a\u003e: Fixed exponential memory blowup when type-checking deeply-nested dict literals, which could cause VSCode to be killed by the OS. Memory usage for a depth-25 dict dropped from ~7.7 GB to ~239 MB.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3261\"\u003e#3261\u003c/a\u003e: Fixed a false positive \u003ccode\u003ebad-class-definition\u003c/code\u003e when a dataclass field was assigned inside a \u003ccode\u003e@classmethod\u003c/code\u003e or \u003ccode\u003e__init_subclass__\u003c/code\u003e. Pyrefly was incorrectly extracting these as dataclass fields, even though Python's \u003ccode\u003edataclasses.dataclass\u003c/code\u003e ignores them at runtime.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2914\"\u003e#2914\u003c/a\u003e: \u003ccode\u003eassert\u003c/code\u003e statements now flag a non-callable \u003ccode\u003e__bool__\u003c/code\u003e on the test expression, closing a gap that previously only caught the issue inside \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2867\"\u003e#2867\u003c/a\u003e: Fixed \u003ccode\u003eurlunparse\u003c/code\u003e being inferred as returning \u003ccode\u003eLiteral[b'']\u003c/code\u003e instead of \u003ccode\u003estr\u003c/code\u003e. The fix reworks \u003ccode\u003eas_superclass\u003c/code\u003e so tuple-like \u003ccode\u003eNamedTuple\u003c/code\u003e subclasses are upcast through their erased tuple element types, which stops \u003ccode\u003eParseResult\u003c/code\u003e from spuriously matching \u003ccode\u003eIterable[None]\u003c/code\u003e and selecting the bytes overload.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3266\"\u003e#3266\u003c/a\u003e: Added a quick fix for the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members, turning the suggestion into a code action that rewrites the surrounding string literal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3230\"\u003e#3230\u003c/a\u003e: Numeric parameter defaults now preserve their original spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e) in hover and signature display rather than being normalized to a decimal value.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3302\"\u003e#3302\u003c/a\u003e: Added a \u003ccode\u003epath\u003c/code\u003e field to the \u003ccode\u003epyrefly report\u003c/code\u003e JSON \u003ccode\u003eModuleReport\u003c/code\u003e, restoring compatibility with typestats.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e267ba6974db6d041c1fe74975c08d938d8ae3d1\"\u003e\u003ccode\u003ee267ba6\u003c/code\u003e\u003c/a\u003e Fix provide_type race condition with config recheck cancellation (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3316\"\u003e#3316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fe26ba3ace3c39794b19b8220f35c56a19d0b9cf\"\u003e\u003ccode\u003efe26ba3\u003c/code\u003e\u003c/a\u003e Fix failing quick fix test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/6d9611de431d43e26d47b5e97e4499cf9a94e931\"\u003e\u003ccode\u003e6d9611d\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eFuncMetadata::def\u003c/code\u003e to reduce code duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a545b3a13cac916b4d92b69ee82bb936c3432eb0\"\u003e\u003ccode\u003ea545b3a\u003c/code\u003e\u003c/a\u003e Add a more general \u003ccode\u003eFuncMetadata::def\u003c/code\u003e helper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/18b733123f735db871d2442dcb645e2aa90a13ce\"\u003e\u003ccode\u003e18b7331\u003c/code\u003e\u003c/a\u003e Rename \u003ccode\u003eFuncMetadata::def\u003c/code\u003e to \u003ccode\u003eFuncMetadata::method\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/4ecf8c7f3fef10bb9add69f2a4b379e539f5f36b\"\u003e\u003ccode\u003e4ecf8c7\u003c/code\u003e\u003c/a\u003e Remove unnecessary parameters from \u003ccode\u003eFuncMetadata::def\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/c3c366882b9b5011e4a5769a1eaa380335bf67f6\"\u003e\u003ccode\u003ec3c3668\u003c/code\u003e\u003c/a\u003e Deduplicate property handling code in class_field.rs and attr.rs.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/937054ba39175c7dde5c86354ff868078e7388ea\"\u003e\u003ccode\u003e937054b\u003c/code\u003e\u003c/a\u003e Add a bunch more tests for constructing properties via \u003ccode\u003eproperty(...)\u003c/code\u003e call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/5a95af558ad82a40f8148bce062f5a462d0afdea\"\u003e\u003ccode\u003e5a95af5\u003c/code\u003e\u003c/a\u003e Fix handling of fset=None in \u003ccode\u003eproperty(...)\u003c/code\u003e calls\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ea94a54a840cf6f7cada27887d3881589c5c510e\"\u003e\u003ccode\u003eea94a54\u003c/code\u003e\u003c/a\u003e fix Recognize explicitly constructed properties as such \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3141\"\u003e#3141\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3144\"\u003e#3144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.1...0.64.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.63.1\u0026new-version=0.64.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 \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/scipy/scipy-stubs/pull/1594","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipy%2Fscipy-stubs/issues/1594","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1594/packages"},{"uuid":"4436605039","node_id":"PR_kwDOQl9Slc7bDHmc","number":370,"state":"open","title":"chore(deps-dev): bump pyrefly from 0.64.0 to 1.0.0","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":6,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-13T09:25:22.000Z","updated_at":"2026-05-13T09:34:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"pyrefly","old_version":"0.64.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.64.0 to 1.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pyrefly\u0026package-manager=uv\u0026previous-version=0.64.0\u0026new-version=1.0.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)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Ven0m0/gemini-web-wrapper/pull/370","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ven0m0%2Fgemini-web-wrapper/issues/370","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/370/packages"},{"uuid":"4433679548","node_id":"PR_kwDORmRJ-s7a5woT","number":2129,"state":"closed","title":"Bump pyrefly from 0.64.1 to 1.0.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-13T00:53:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-13T00:49:08.000Z","updated_at":"2026-05-13T00:53:45.000Z","time_to_close":268,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pyrefly","old_version":"0.64.1","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.64.1 to 1.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.1...1.0.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=pyrefly\u0026package-manager=pip\u0026previous-version=0.64.1\u0026new-version=1.0.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)\n\n\n\u003c/details\u003e","html_url":"https://github.com/adamtheturtle/literalizer/pull/2129","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamtheturtle%2Fliteralizer/issues/2129","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2129/packages"},{"uuid":"4419604457","node_id":"PR_kwDONxKINs7aL0GV","number":65,"state":"closed","title":"Bump pyrefly from 0.63.1 to 0.64.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T09:23:30.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T09:22:38.000Z","updated_at":"2026-05-11T09:23:31.000Z","time_to_close":52,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pyrefly","old_version":"0.63.1","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.63.1 to 0.64.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.64.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: May 05, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.64.0 bundles \u003cstrong\u003e190 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- You can now pass generic or overloaded callables to higher-order functions and Pyrefly will preserve their structure in the return type. For example, \u003ccode\u003eidentity(identity)\u003c/code\u003e now correctly returns a generic callable instead of degrading to \u003ccode\u003eUnknown\u003c/code\u003e. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Same-scope class rebinds (like \u003ccode\u003eReal = Dummy\u003c/code\u003e after \u003ccode\u003eclass Real\u003c/code\u003e) are now checked against the original class as if it were an implicit \u003ccode\u003etype[Real]\u003c/code\u003e annotation, preventing silent type changes and fixing spurious constructor-call errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Generic classes with missing type arguments in lax mode now default to \u003ccode\u003eAny\u003c/code\u003e instead of raising variance errors, improving consistency with how we handle other incomplete types. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pydantic \u003ccode\u003efield_validator\u003c/code\u003e decorators with \u003ccode\u003emode='before'\u003c/code\u003e and \u003ccode\u003emode='plain'\u003c/code\u003e are now supported, allowing validators to accept broader input types before coercion. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Spurious unpack diagnostics are no longer emitted when the right-hand side involves \u003ccode\u003eNever\u003c/code\u003e (e.g. \u003ccode\u003ea, b, c = never()\u003c/code\u003e or \u003ccode\u003ea, b = (never(), 1)\u003c/code\u003e). The unpack solver is now \u003ccode\u003eNever\u003c/code\u003e-aware, recognizing that the producing expression cannot complete and any error message at the unpack site would be misleading. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- \u003ccode\u003eassert\u003c/code\u003e statements now check that \u003ccode\u003e__bool__\u003c/code\u003e is callable on the test expression, matching the behavior already in place for \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions (and aligning with mypy and pyright).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The language server now advertises both \u003ccode\u003esource.fixAll\u003c/code\u003e and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e code action kinds, enabling selective fix-on-save configuration across editors that implement the LSP protocol. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Document highlights now correctly distinguish between read and write references, setting \u003ccode\u003eDocumentHighlightKind::WRITE\u003c/code\u003e for assignments and declarations. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Go-to-definition on relative imports in site-packages files now correctly resolves to the package source instead of returning null when a \u003ccode\u003epyproject.toml\u003c/code\u003e exists at the project root. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Notebook cell index resolution has been fixed to prevent mismatches between code cells and markdown cells, eliminating panics and incorrect byte offset calculations in Jupyter notebooks. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Cross-module \u0026quot;find references\u0026quot; (external references) is now enabled by default, returning references across the entire project rather than just the current file. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new quick fix turns the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members into a code action that replaces the offending string literal with the proper enum member access. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003e# pyrefly: ignore\u003c/code\u003e quick fix inserts a suppression comment for the diagnostic at the cursor, automatically merging into an existing pyrefly-ignore directive on the same line or on a comment-only line above when present. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Numeric parameter defaults now preserve their source spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e, \u003ccode\u003e0xFF\u003c/code\u003e, \u003ccode\u003e0b101\u003c/code\u003e) in hover and signature display rather than being normalized to decimal. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Code actions documentation has been added to the IDE Supported Features page, covering quick fixes and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e configuration.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOnboarding \u0026amp; VS Code Extension\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A redesigned unconfigured-project experience: when no \u003ccode\u003epyrefly.toml\u003c/code\u003e is found, Pyrefly auto-detects nearby \u003ccode\u003emypy.ini\u003c/code\u003e, \u003ccode\u003epyrightconfig.json\u003c/code\u003e, or \u003ccode\u003e[tool.mypy]\u003c/code\u003e/\u003ccode\u003e[tool.pyright]\u003c/code\u003e sections in \u003ccode\u003epyproject.toml\u003c/code\u003e and synthesizes an in-memory configuration migrated from those settings (using the \u003ccode\u003elegacy\u003c/code\u003e or \u003ccode\u003edefault\u003c/code\u003e preset respectively). With no detectable configuration, the new \u003ccode\u003ebasic\u003c/code\u003e preset is used. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.typeCheckingMode\u003c/code\u003e workspace setting (auto / off / basic / legacy / default / strict, default \u003ccode\u003eauto\u003c/code\u003e) lets users pick a preset for files not covered by an explicit Pyrefly configuration, directly from the VS Code settings UI. The legacy \u003ccode\u003epython.pyrefly.displayTypeErrors\u003c/code\u003e setting is now deprecated, with values transparently mapped to the new model. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.disableTypeErrors\u003c/code\u003e workspace setting provides a clean per-workspace kill switch for diagnostics, independent of the type-checking mode. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The VS Code status bar has been redesigned: it now shows the active preset (e.g. \u0026quot;Pyrefly (Legacy)\u0026quot;, \u0026quot;Pyrefly (Basic)\u0026quot;) and the tooltip explains why that preset was chosen and links to the relevant docs. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- After a \u003ccode\u003epyrefly check\u003c/code\u003e on an unconfigured project, the CLI now prints a short upsell to \u003cstrong\u003estderr\u003c/strong\u003e explaining what configuration was synthesized and pointing at \u003ccode\u003epyrefly init\u003c/code\u003e. The message is routed to stderr so machine-readable stdout formats (e.g. \u003ccode\u003e--output-format json\u003c/code\u003e) remain untouched.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Configuration presets (\u003ccode\u003eoff\u003c/code\u003e, \u003ccode\u003ebasic\u003c/code\u003e, \u003ccode\u003elegacy\u003c/code\u003e, \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003estrict\u003c/code\u003e) are now available via the \u003ccode\u003epreset\u003c/code\u003e option, providing named collections of error severities and behavior settings as a base configuration that user settings can override. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003elegacy\u003c/code\u003e preset is now used by \u003ccode\u003epyrefly init\u003c/code\u003e for mypy migration, disabling checks mypy doesn't have and setting looser inference defaults. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eimplicit-any\u003c/code\u003e error code has been split into sub-kinds (\u003ccode\u003eimplicit-any-attribute\u003c/code\u003e, \u003ccode\u003eimplicit-any-empty-container\u003c/code\u003e, \u003ccode\u003eimplicit-any-parameter\u003c/code\u003e, \u003ccode\u003eimplicit-any-type-argument\u003c/code\u003e) with \u003ccode\u003eimplicit-any\u003c/code\u003e as the parent, allowing finer-grained control over where implicit \u003ccode\u003eAny\u003c/code\u003e is flagged. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eunbound-name\u003c/code\u003e error is now disabled in the \u003ccode\u003elegacy\u003c/code\u003e preset to match mypy's default behavior, which does not flag possibly-undefined variables.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Reporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eincompatible-overload-residual\u003c/code\u003e error kind has been introduced for cases where all branches of an overloaded callable are pruned during higher-order function analysis, making it easier to configure these errors independently. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Error messages for all-pruned overload residuals now describe the incompatibility in terms of \u0026quot;solved type variables\u0026quot; rather than \u0026quot;solved type constraints\u0026quot; for better clarity. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003epyrefly suppress\u003c/code\u003e command now correctly handles removal of unused ignores via the \u003ccode\u003e--remove-unused\u003c/code\u003e flag, which was previously broken.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eFactory Boy Support\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Pyrefly now infers the correct model return types for \u003ccode\u003ecreate()\u003c/code\u003e, \u003ccode\u003ebuild()\u003c/code\u003e, \u003ccode\u003ecreate_batch()\u003c/code\u003e, and \u003ccode\u003ebuild_batch()\u003c/code\u003e methods on \u003ccode\u003eDjangoModelFactory\u003c/code\u003e subclasses by reading the inner \u003ccode\u003eMeta.model\u003c/code\u003e attribute. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- False-positive \u003ccode\u003ebad-override\u003c/code\u003e errors on the inner \u003ccode\u003eMeta\u003c/code\u003e class in factory-boy factories are now suppressed, matching how we handle Django and Marshmallow.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The \u003ccode\u003epyrefly report\u003c/code\u003e JSON output now includes a \u003ccode\u003epath\u003c/code\u003e field on each \u003ccode\u003eModuleReport\u003c/code\u003e, for compatibility with typestats and similar tooling.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Deeply-nested dict literals no longer cause exponential memory growth during type inference. A depth-25 dict literal that previously consumed ~7.7 GB now uses ~239 MB by computing the union of field types on demand instead of storing it redundantly. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Callable residual finalization has been optimized to avoid redundant type cloning and traversals, reducing memory churn in attribute-heavy code. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Eliminated some bugs that caused Pyrefly to unnecessarily analyze dependencies, improving latency and memory use, especially in the IDE.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e15\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3057\"\u003e#3057\u003c/a\u003e: Fixed an issue where string concatenation with the \u003ccode\u003e+\u003c/code\u003e operator was incorrectly flagging \u003ccode\u003estr\u003c/code\u003e as not assignable to \u003ccode\u003eLiteralString\u003c/code\u003e attributes. Pyrefly now preserves \u003ccode\u003eLiteralString\u003c/code\u003e style when adding two explicit string literals and uses implicit style otherwise.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/105\"\u003e#105\u003c/a\u003e: Fixed premature type pinning in function calls where arguments were incorrectly narrowed before all constraints were solved. For example, \u003ccode\u003efoo(x, y)\u003c/code\u003e with \u003ccode\u003ex: int | None\u003c/code\u003e and \u003ccode\u003ey: int | None\u003c/code\u003e no longer incorrectly narrows \u003ccode\u003ex\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e when passed to a generic \u003ccode\u003efoo[T](https://github.com/facebook/pyrefly/blob/HEAD/a: T, b: T)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3198\"\u003e#3198\u003c/a\u003e: Fixed \u003ccode\u003epyrefly suppress --remove-unused\u003c/code\u003e which was not actually removing unused error suppressions. The command now correctly processes the \u003ccode\u003e--remove-unused\u003c/code\u003e flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3024\"\u003e#3024\u003c/a\u003e: The language server now advertises \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e in addition to \u003ccode\u003esource.fixAll\u003c/code\u003e, allowing users to selectively enable or disable Pyrefly's fix-all actions in editors that support LSP code action kinds.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2819\"\u003e#2819\u003c/a\u003e: Fixed incorrect variance errors when using generic classes like Pydantic's \u003ccode\u003eRootModel\u003c/code\u003e in lax mode. Missing type arguments now degrade to \u003ccode\u003eAny\u003c/code\u003e instead of raising errors, matching our handling of other incomplete types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3000\"\u003e#3000\u003c/a\u003e: Fixed \u0026quot;find references\u0026quot; failures in Cursor and other editors caused by relative imports in site-packages not resolving correctly when a \u003ccode\u003epyproject.toml\u003c/code\u003e existed at the project root.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2563\"\u003e#2563\u003c/a\u003e: Fixed go-to-definition on relative imports in virtual environment site-packages, which was returning null because the project root's import path was matching before the more specific site-package prefix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3193\"\u003e#3193\u003c/a\u003e: Fixed an error where \u003ccode\u003elist[\u0026quot;A|B\u0026quot;]\u003c/code\u003e was incorrectly rejected as \u003ccode\u003enot-a-type\u003c/code\u003e. Type argument subscripts are now bound as type expressions even in value context, allowing forward-ref strings to be parsed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3286\"\u003e#3286\u003c/a\u003e: Fixed exponential memory blowup when type-checking deeply-nested dict literals, which could cause VSCode to be killed by the OS. Memory usage for a depth-25 dict dropped from ~7.7 GB to ~239 MB.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3261\"\u003e#3261\u003c/a\u003e: Fixed a false positive \u003ccode\u003ebad-class-definition\u003c/code\u003e when a dataclass field was assigned inside a \u003ccode\u003e@classmethod\u003c/code\u003e or \u003ccode\u003e__init_subclass__\u003c/code\u003e. Pyrefly was incorrectly extracting these as dataclass fields, even though Python's \u003ccode\u003edataclasses.dataclass\u003c/code\u003e ignores them at runtime.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2914\"\u003e#2914\u003c/a\u003e: \u003ccode\u003eassert\u003c/code\u003e statements now flag a non-callable \u003ccode\u003e__bool__\u003c/code\u003e on the test expression, closing a gap that previously only caught the issue inside \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2867\"\u003e#2867\u003c/a\u003e: Fixed \u003ccode\u003eurlunparse\u003c/code\u003e being inferred as returning \u003ccode\u003eLiteral[b'']\u003c/code\u003e instead of \u003ccode\u003estr\u003c/code\u003e. The fix reworks \u003ccode\u003eas_superclass\u003c/code\u003e so tuple-like \u003ccode\u003eNamedTuple\u003c/code\u003e subclasses are upcast through their erased tuple element types, which stops \u003ccode\u003eParseResult\u003c/code\u003e from spuriously matching \u003ccode\u003eIterable[None]\u003c/code\u003e and selecting the bytes overload.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3266\"\u003e#3266\u003c/a\u003e: Added a quick fix for the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members, turning the suggestion into a code action that rewrites the surrounding string literal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3230\"\u003e#3230\u003c/a\u003e: Numeric parameter defaults now preserve their original spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e) in hover and signature display rather than being normalized to a decimal value.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3302\"\u003e#3302\u003c/a\u003e: Added a \u003ccode\u003epath\u003c/code\u003e field to the \u003ccode\u003epyrefly report\u003c/code\u003e JSON \u003ccode\u003eModuleReport\u003c/code\u003e, restoring compatibility with typestats.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e63fa8d7d9160d3d319569ee2a4439883eaa4c9e\"\u003e\u003ccode\u003ee63fa8d\u003c/code\u003e\u003c/a\u003e remove extensionDependency on ms-python.python (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3326\"\u003e#3326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/15b8f817923a9b3efb8f5192a8ba1359878c3e58\"\u003e\u003ccode\u003e15b8f81\u003c/code\u003e\u003c/a\u003e abstract away python-environment from extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e267ba6974db6d041c1fe74975c08d938d8ae3d1\"\u003e\u003ccode\u003ee267ba6\u003c/code\u003e\u003c/a\u003e Fix provide_type race condition with config recheck cancellation (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3316\"\u003e#3316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fe26ba3ace3c39794b19b8220f35c56a19d0b9cf\"\u003e\u003ccode\u003efe26ba3\u003c/code\u003e\u003c/a\u003e Fix failing quick fix test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/6d9611de431d43e26d47b5e97e4499cf9a94e931\"\u003e\u003ccode\u003e6d9611d\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eFuncMetadata::def\u003c/code\u003e to reduce code duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a545b3a13cac916b4d92b69ee82bb936c3432eb0\"\u003e\u003ccode\u003ea545b3a\u003c/code\u003e\u003c/a\u003e Add a more general \u003ccode\u003eFuncMetadata::def\u003c/code\u003e helper\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.1...0.64.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.63.1\u0026new-version=0.64.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/shinolab/pyautd3_emulator/pull/65","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinolab%2Fpyautd3_emulator/issues/65","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/65/packages"},{"uuid":"4418821015","node_id":"PR_kwDORQiH8c7aJQd0","number":44,"state":"open","title":"chore(deps): Bump pyrefly from 0.62.0 to 0.64.1","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-11T07:15:50.000Z","updated_at":"2026-05-11T07:15:52.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","packages":[{"name":"pyrefly","old_version":"0.62.0","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.62.0 to 0.64.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.64.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: May 05, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.64.0 bundles \u003cstrong\u003e190 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- You can now pass generic or overloaded callables to higher-order functions and Pyrefly will preserve their structure in the return type. For example, \u003ccode\u003eidentity(identity)\u003c/code\u003e now correctly returns a generic callable instead of degrading to \u003ccode\u003eUnknown\u003c/code\u003e. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Same-scope class rebinds (like \u003ccode\u003eReal = Dummy\u003c/code\u003e after \u003ccode\u003eclass Real\u003c/code\u003e) are now checked against the original class as if it were an implicit \u003ccode\u003etype[Real]\u003c/code\u003e annotation, preventing silent type changes and fixing spurious constructor-call errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Generic classes with missing type arguments in lax mode now default to \u003ccode\u003eAny\u003c/code\u003e instead of raising variance errors, improving consistency with how we handle other incomplete types. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pydantic \u003ccode\u003efield_validator\u003c/code\u003e decorators with \u003ccode\u003emode='before'\u003c/code\u003e and \u003ccode\u003emode='plain'\u003c/code\u003e are now supported, allowing validators to accept broader input types before coercion. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Spurious unpack diagnostics are no longer emitted when the right-hand side involves \u003ccode\u003eNever\u003c/code\u003e (e.g. \u003ccode\u003ea, b, c = never()\u003c/code\u003e or \u003ccode\u003ea, b = (never(), 1)\u003c/code\u003e). The unpack solver is now \u003ccode\u003eNever\u003c/code\u003e-aware, recognizing that the producing expression cannot complete and any error message at the unpack site would be misleading. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- \u003ccode\u003eassert\u003c/code\u003e statements now check that \u003ccode\u003e__bool__\u003c/code\u003e is callable on the test expression, matching the behavior already in place for \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions (and aligning with mypy and pyright).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The language server now advertises both \u003ccode\u003esource.fixAll\u003c/code\u003e and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e code action kinds, enabling selective fix-on-save configuration across editors that implement the LSP protocol. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Document highlights now correctly distinguish between read and write references, setting \u003ccode\u003eDocumentHighlightKind::WRITE\u003c/code\u003e for assignments and declarations. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Go-to-definition on relative imports in site-packages files now correctly resolves to the package source instead of returning null when a \u003ccode\u003epyproject.toml\u003c/code\u003e exists at the project root. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Notebook cell index resolution has been fixed to prevent mismatches between code cells and markdown cells, eliminating panics and incorrect byte offset calculations in Jupyter notebooks. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Cross-module \u0026quot;find references\u0026quot; (external references) is now enabled by default, returning references across the entire project rather than just the current file. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new quick fix turns the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members into a code action that replaces the offending string literal with the proper enum member access. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003e# pyrefly: ignore\u003c/code\u003e quick fix inserts a suppression comment for the diagnostic at the cursor, automatically merging into an existing pyrefly-ignore directive on the same line or on a comment-only line above when present. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Numeric parameter defaults now preserve their source spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e, \u003ccode\u003e0xFF\u003c/code\u003e, \u003ccode\u003e0b101\u003c/code\u003e) in hover and signature display rather than being normalized to decimal. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Code actions documentation has been added to the IDE Supported Features page, covering quick fixes and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e configuration.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOnboarding \u0026amp; VS Code Extension\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A redesigned unconfigured-project experience: when no \u003ccode\u003epyrefly.toml\u003c/code\u003e is found, Pyrefly auto-detects nearby \u003ccode\u003emypy.ini\u003c/code\u003e, \u003ccode\u003epyrightconfig.json\u003c/code\u003e, or \u003ccode\u003e[tool.mypy]\u003c/code\u003e/\u003ccode\u003e[tool.pyright]\u003c/code\u003e sections in \u003ccode\u003epyproject.toml\u003c/code\u003e and synthesizes an in-memory configuration migrated from those settings (using the \u003ccode\u003elegacy\u003c/code\u003e or \u003ccode\u003edefault\u003c/code\u003e preset respectively). With no detectable configuration, the new \u003ccode\u003ebasic\u003c/code\u003e preset is used. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.typeCheckingMode\u003c/code\u003e workspace setting (auto / off / basic / legacy / default / strict, default \u003ccode\u003eauto\u003c/code\u003e) lets users pick a preset for files not covered by an explicit Pyrefly configuration, directly from the VS Code settings UI. The legacy \u003ccode\u003epython.pyrefly.displayTypeErrors\u003c/code\u003e setting is now deprecated, with values transparently mapped to the new model. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.disableTypeErrors\u003c/code\u003e workspace setting provides a clean per-workspace kill switch for diagnostics, independent of the type-checking mode. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The VS Code status bar has been redesigned: it now shows the active preset (e.g. \u0026quot;Pyrefly (Legacy)\u0026quot;, \u0026quot;Pyrefly (Basic)\u0026quot;) and the tooltip explains why that preset was chosen and links to the relevant docs. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- After a \u003ccode\u003epyrefly check\u003c/code\u003e on an unconfigured project, the CLI now prints a short upsell to \u003cstrong\u003estderr\u003c/strong\u003e explaining what configuration was synthesized and pointing at \u003ccode\u003epyrefly init\u003c/code\u003e. The message is routed to stderr so machine-readable stdout formats (e.g. \u003ccode\u003e--output-format json\u003c/code\u003e) remain untouched.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Configuration presets (\u003ccode\u003eoff\u003c/code\u003e, \u003ccode\u003ebasic\u003c/code\u003e, \u003ccode\u003elegacy\u003c/code\u003e, \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003estrict\u003c/code\u003e) are now available via the \u003ccode\u003epreset\u003c/code\u003e option, providing named collections of error severities and behavior settings as a base configuration that user settings can override. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003elegacy\u003c/code\u003e preset is now used by \u003ccode\u003epyrefly init\u003c/code\u003e for mypy migration, disabling checks mypy doesn't have and setting looser inference defaults. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eimplicit-any\u003c/code\u003e error code has been split into sub-kinds (\u003ccode\u003eimplicit-any-attribute\u003c/code\u003e, \u003ccode\u003eimplicit-any-empty-container\u003c/code\u003e, \u003ccode\u003eimplicit-any-parameter\u003c/code\u003e, \u003ccode\u003eimplicit-any-type-argument\u003c/code\u003e) with \u003ccode\u003eimplicit-any\u003c/code\u003e as the parent, allowing finer-grained control over where implicit \u003ccode\u003eAny\u003c/code\u003e is flagged. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eunbound-name\u003c/code\u003e error is now disabled in the \u003ccode\u003elegacy\u003c/code\u003e preset to match mypy's default behavior, which does not flag possibly-undefined variables.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Reporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eincompatible-overload-residual\u003c/code\u003e error kind has been introduced for cases where all branches of an overloaded callable are pruned during higher-order function analysis, making it easier to configure these errors independently. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Error messages for all-pruned overload residuals now describe the incompatibility in terms of \u0026quot;solved type variables\u0026quot; rather than \u0026quot;solved type constraints\u0026quot; for better clarity. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003epyrefly suppress\u003c/code\u003e command now correctly handles removal of unused ignores via the \u003ccode\u003e--remove-unused\u003c/code\u003e flag, which was previously broken.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eFactory Boy Support\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Pyrefly now infers the correct model return types for \u003ccode\u003ecreate()\u003c/code\u003e, \u003ccode\u003ebuild()\u003c/code\u003e, \u003ccode\u003ecreate_batch()\u003c/code\u003e, and \u003ccode\u003ebuild_batch()\u003c/code\u003e methods on \u003ccode\u003eDjangoModelFactory\u003c/code\u003e subclasses by reading the inner \u003ccode\u003eMeta.model\u003c/code\u003e attribute. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- False-positive \u003ccode\u003ebad-override\u003c/code\u003e errors on the inner \u003ccode\u003eMeta\u003c/code\u003e class in factory-boy factories are now suppressed, matching how we handle Django and Marshmallow.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The \u003ccode\u003epyrefly report\u003c/code\u003e JSON output now includes a \u003ccode\u003epath\u003c/code\u003e field on each \u003ccode\u003eModuleReport\u003c/code\u003e, for compatibility with typestats and similar tooling.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Deeply-nested dict literals no longer cause exponential memory growth during type inference. A depth-25 dict literal that previously consumed ~7.7 GB now uses ~239 MB by computing the union of field types on demand instead of storing it redundantly. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Callable residual finalization has been optimized to avoid redundant type cloning and traversals, reducing memory churn in attribute-heavy code. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Eliminated some bugs that caused Pyrefly to unnecessarily analyze dependencies, improving latency and memory use, especially in the IDE.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e15\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3057\"\u003e#3057\u003c/a\u003e: Fixed an issue where string concatenation with the \u003ccode\u003e+\u003c/code\u003e operator was incorrectly flagging \u003ccode\u003estr\u003c/code\u003e as not assignable to \u003ccode\u003eLiteralString\u003c/code\u003e attributes. Pyrefly now preserves \u003ccode\u003eLiteralString\u003c/code\u003e style when adding two explicit string literals and uses implicit style otherwise.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/105\"\u003e#105\u003c/a\u003e: Fixed premature type pinning in function calls where arguments were incorrectly narrowed before all constraints were solved. For example, \u003ccode\u003efoo(x, y)\u003c/code\u003e with \u003ccode\u003ex: int | None\u003c/code\u003e and \u003ccode\u003ey: int | None\u003c/code\u003e no longer incorrectly narrows \u003ccode\u003ex\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e when passed to a generic \u003ccode\u003efoo[T](https://github.com/facebook/pyrefly/blob/HEAD/a: T, b: T)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3198\"\u003e#3198\u003c/a\u003e: Fixed \u003ccode\u003epyrefly suppress --remove-unused\u003c/code\u003e which was not actually removing unused error suppressions. The command now correctly processes the \u003ccode\u003e--remove-unused\u003c/code\u003e flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3024\"\u003e#3024\u003c/a\u003e: The language server now advertises \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e in addition to \u003ccode\u003esource.fixAll\u003c/code\u003e, allowing users to selectively enable or disable Pyrefly's fix-all actions in editors that support LSP code action kinds.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2819\"\u003e#2819\u003c/a\u003e: Fixed incorrect variance errors when using generic classes like Pydantic's \u003ccode\u003eRootModel\u003c/code\u003e in lax mode. Missing type arguments now degrade to \u003ccode\u003eAny\u003c/code\u003e instead of raising errors, matching our handling of other incomplete types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3000\"\u003e#3000\u003c/a\u003e: Fixed \u0026quot;find references\u0026quot; failures in Cursor and other editors caused by relative imports in site-packages not resolving correctly when a \u003ccode\u003epyproject.toml\u003c/code\u003e existed at the project root.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2563\"\u003e#2563\u003c/a\u003e: Fixed go-to-definition on relative imports in virtual environment site-packages, which was returning null because the project root's import path was matching before the more specific site-package prefix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3193\"\u003e#3193\u003c/a\u003e: Fixed an error where \u003ccode\u003elist[\u0026quot;A|B\u0026quot;]\u003c/code\u003e was incorrectly rejected as \u003ccode\u003enot-a-type\u003c/code\u003e. Type argument subscripts are now bound as type expressions even in value context, allowing forward-ref strings to be parsed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3286\"\u003e#3286\u003c/a\u003e: Fixed exponential memory blowup when type-checking deeply-nested dict literals, which could cause VSCode to be killed by the OS. Memory usage for a depth-25 dict dropped from ~7.7 GB to ~239 MB.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3261\"\u003e#3261\u003c/a\u003e: Fixed a false positive \u003ccode\u003ebad-class-definition\u003c/code\u003e when a dataclass field was assigned inside a \u003ccode\u003e@classmethod\u003c/code\u003e or \u003ccode\u003e__init_subclass__\u003c/code\u003e. Pyrefly was incorrectly extracting these as dataclass fields, even though Python's \u003ccode\u003edataclasses.dataclass\u003c/code\u003e ignores them at runtime.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2914\"\u003e#2914\u003c/a\u003e: \u003ccode\u003eassert\u003c/code\u003e statements now flag a non-callable \u003ccode\u003e__bool__\u003c/code\u003e on the test expression, closing a gap that previously only caught the issue inside \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2867\"\u003e#2867\u003c/a\u003e: Fixed \u003ccode\u003eurlunparse\u003c/code\u003e being inferred as returning \u003ccode\u003eLiteral[b'']\u003c/code\u003e instead of \u003ccode\u003estr\u003c/code\u003e. The fix reworks \u003ccode\u003eas_superclass\u003c/code\u003e so tuple-like \u003ccode\u003eNamedTuple\u003c/code\u003e subclasses are upcast through their erased tuple element types, which stops \u003ccode\u003eParseResult\u003c/code\u003e from spuriously matching \u003ccode\u003eIterable[None]\u003c/code\u003e and selecting the bytes overload.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3266\"\u003e#3266\u003c/a\u003e: Added a quick fix for the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members, turning the suggestion into a code action that rewrites the surrounding string literal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3230\"\u003e#3230\u003c/a\u003e: Numeric parameter defaults now preserve their original spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e) in hover and signature display rather than being normalized to a decimal value.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3302\"\u003e#3302\u003c/a\u003e: Added a \u003ccode\u003epath\u003c/code\u003e field to the \u003ccode\u003epyrefly report\u003c/code\u003e JSON \u003ccode\u003eModuleReport\u003c/code\u003e, restoring compatibility with typestats.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e63fa8d7d9160d3d319569ee2a4439883eaa4c9e\"\u003e\u003ccode\u003ee63fa8d\u003c/code\u003e\u003c/a\u003e remove extensionDependency on ms-python.python (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3326\"\u003e#3326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/15b8f817923a9b3efb8f5192a8ba1359878c3e58\"\u003e\u003ccode\u003e15b8f81\u003c/code\u003e\u003c/a\u003e abstract away python-environment from extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e267ba6974db6d041c1fe74975c08d938d8ae3d1\"\u003e\u003ccode\u003ee267ba6\u003c/code\u003e\u003c/a\u003e Fix provide_type race condition with config recheck cancellation (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3316\"\u003e#3316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fe26ba3ace3c39794b19b8220f35c56a19d0b9cf\"\u003e\u003ccode\u003efe26ba3\u003c/code\u003e\u003c/a\u003e Fix failing quick fix test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/6d9611de431d43e26d47b5e97e4499cf9a94e931\"\u003e\u003ccode\u003e6d9611d\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eFuncMetadata::def\u003c/code\u003e to reduce code duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a545b3a13cac916b4d92b69ee82bb936c3432eb0\"\u003e\u003ccode\u003ea545b3a\u003c/code\u003e\u003c/a\u003e Add a more general \u003ccode\u003eFuncMetadata::def\u003c/code\u003e helper\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.62.0...0.64.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=pyrefly\u0026package-manager=pip\u0026previous-version=0.62.0\u0026new-version=0.64.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/PaketMutfak/croupier/pull/44","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PaketMutfak%2Fcroupier/issues/44","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/44/packages"},{"uuid":"4417685284","node_id":"PR_kwDORuQ5ZM7aFphT","number":201,"state":"closed","title":"chore(deps): Bump pyrefly from 0.64.0 to 0.64.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T02:42:07.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T02:37:12.000Z","updated_at":"2026-05-11T02:42:09.000Z","time_to_close":295,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","packages":[{"name":"pyrefly","old_version":"0.64.0","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.64.0 to 0.64.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e63fa8d7d9160d3d319569ee2a4439883eaa4c9e\"\u003e\u003ccode\u003ee63fa8d\u003c/code\u003e\u003c/a\u003e remove extensionDependency on ms-python.python (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3326\"\u003e#3326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/15b8f817923a9b3efb8f5192a8ba1359878c3e58\"\u003e\u003ccode\u003e15b8f81\u003c/code\u003e\u003c/a\u003e abstract away python-environment from extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.64.0\u0026new-version=0.64.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/adamtheturtle/literalizer-cli/pull/201","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamtheturtle%2Fliteralizer-cli/issues/201","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/201/packages"},{"uuid":"4416836759","node_id":"PR_kwDOSAiYV87aDGct","number":25,"state":"closed","title":"Bump the python-minor-and-patch group across 1 directory with 6 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-17T21:06:39.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-10T21:06:46.000Z","updated_at":"2026-05-17T21:06:41.000Z","time_to_close":604793,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-minor-and-patch","update_count":6,"packages":[{"name":"fastapi","old_version":"0.136.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"python-multipart","old_version":"0.0.26","new_version":"0.0.27","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"hypothesis","old_version":"6.152.1","new_version":"6.152.4","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"ruff","old_version":"0.15.11","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pyrefly","old_version":"0.62.0","new_version":"0.63.1","repository_url":"https://github.com/facebook/pyrefly"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.0` | `0.136.1` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.26` | `0.0.27` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.152.1` | `6.152.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.11` | `0.15.12` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.62.0` | `0.63.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n\n\nUpdates `fastapi` from 0.136.0 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.0...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.26 to 0.0.27\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.27\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePass parse offsets via constructors by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003eKludex/python-multipart#268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd multipart header limits by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003eKludex/python-multipart#267\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.27 (2026-04-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd multipart header limits \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003e#267\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePass parse offsets via constructors \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003e#268\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6d1d6892a6b01b25da6f3e7b097e8e06c57fb250\"\u003e\u003ccode\u003e6d1d689\u003c/code\u003e\u003c/a\u003e Version 0.0.27 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0b10220b1555af068a2bc8b198022b1ae238200f\"\u003e\u003ccode\u003e0b10220\u003c/code\u003e\u003c/a\u003e Run CI on main branch pull requests (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/271\"\u003e#271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/3e64f5f8caba0e5d391b0c1ad0f1c2edf9e8f911\"\u003e\u003ccode\u003e3e64f5f\u003c/code\u003e\u003c/a\u003e Add multipart header limits (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/267\"\u003e#267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/eb109cc4eb8174f2a7efc1ba894b1bf6425c0b14\"\u003e\u003ccode\u003eeb109cc\u003c/code\u003e\u003c/a\u003e Pass parse offsets via constructors (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/268\"\u003e#268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/78e29abb9a339598975beee093a770ec3033f76d\"\u003e\u003ccode\u003e78e29ab\u003c/code\u003e\u003c/a\u003e Bump pytest from 9.0.2 to 9.0.3 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/b2ddd0982bdf0fe852e4f3baa12122d2827af46c\"\u003e\u003ccode\u003eb2ddd09\u003c/code\u003e\u003c/a\u003e fuzz: Enhance fuzzing capabilities with new chunked and boundary tests (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/264\"\u003e#264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.152.1 to 6.152.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.4\u003c/h2\u003e\n\u003cp\u003eThis patch fixes a rare internal error during \u0026quot;Phase.explain\u0026quot;\nintroduced in version 6.149.0 for certain strategies (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4708\"\u003e#4708\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-4\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.3\u003c/h2\u003e\n\u003cp\u003eThe \u0026quot;hypothesis-urandom\u0026quot; backend now reads from \u0026quot;/dev/urandom\u0026quot; with\nbuffering disabled, which improves the control of those hooking\n\u0026quot;/dev/urandom\u0026quot; to change or read Hypothesis's random decisions.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-3\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.2\u003c/h2\u003e\n\u003cp\u003eThis release further improves printing of generated values, building\non the changes in  version 6.151.11.\u003c/p\u003e\n\u003cp\u003ePrinciple changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eIn many cases where we would have printed a complex expression\nproducing a value, we now print the repr (or a pretty-printed\nversion of it).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdditionally, in some cases where we would print a complex\nexpression that involved a lambda, we are now able to simplify that\nexpression into a more readable one.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-2\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/84f92dcf29229e37f822ba3ba5eea4212d2abf35\"\u003e\u003ccode\u003e84f92dc\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.4 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c6814df503fd6afe4bf03831020572c6be44976b\"\u003e\u003ccode\u003ec6814df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4717\"\u003e#4717\u003c/a\u003e from HypothesisWorks/DRMacIver/issue4708\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/82e9446a6d7a22318a9cca8612bb35a1f404e9e1\"\u003e\u003ccode\u003e82e9446\u003c/code\u003e\u003c/a\u003e Address PR review feedback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c77d7e746f3b82ba513f8a22a1ae3bed0ecb52d8\"\u003e\u003ccode\u003ec77d7e7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4719\"\u003e#4719\u003c/a\u003e from Liam-DeVoe/fix-mobile-word-wrapping\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/609de04108945b1ee711a514c3bfa520f75b71e9\"\u003e\u003ccode\u003e609de04\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.3 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/902f1baddcbc0059eee61b3518a07489935e28ef\"\u003e\u003ccode\u003e902f1ba\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4720\"\u003e#4720\u003c/a\u003e from Liam-DeVoe/urandom-disable-buffering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/da81118e4cf06651c63ade29892fe45562a4afbc\"\u003e\u003ccode\u003eda81118\u003c/code\u003e\u003c/a\u003e claude: open /dev/urandom with buffering=0 in URandomProvider\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/4d6a7f0a37f47190694b91ba1072f069a093959f\"\u003e\u003ccode\u003e4d6a7f0\u003c/code\u003e\u003c/a\u003e fix footnote overflow on mobile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/80fada332e4a5cd19e22ac6be9f7dcfea71d9b68\"\u003e\u003ccode\u003e80fada3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4714\"\u003e#4714\u003c/a\u003e from HypothesisWorks/DRMacIver/uv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/4b554b04eec7d8ce685ec126720b562a91e04d09\"\u003e\u003ccode\u003e4b554b0\u003c/code\u003e\u003c/a\u003e Fix AssertionError in Shrinker.explain() for unstable span labels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.152.1...hypothesis-python-6.152.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.11 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.62.0 to 0.63.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.63.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.0...0.63.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.63.0...0.63.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.63.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: April 27, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.63.0 bundles \u003cstrong\u003e129 commits\u003c/strong\u003e from \u003cstrong\u003e26 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Enum member types are preserved even when the metaclass conflicts with \u003ccode\u003eEnumMeta\u003c/code\u003e, reducing noise in projects using custom metaclasses with enums. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Constrained \u003ccode\u003eTypeVar\u003c/code\u003es no longer get pinned to a specific constraint when matched against \u003ccode\u003eAny\u003c/code\u003e, preventing false positives. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Self/cls annotations on all methods and classmethods are validated to ensure they reference the defining class or a superclass, catching more annotation errors.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The LSP now reports \u003ccode\u003eunused-ignore\u003c/code\u003e diagnostics when configured to do so, helping you clean up stale suppression comments. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Completions for attribute override definitions are available in class bodies, surfacing base-class members filtered by fuzzy match. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The LSP server no longer crashes on Jupyter notebook cell URIs (\u003ccode\u003evscode-notebook-cell:\u003c/code\u003e), with full support for resolving notebook cell paths and position offsets. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Workspace symbol search uses the correct location for re-exported symbols, preventing panics on multi-byte UTF-8 characters. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Inlay hints are clickable for built-in types like \u003ccode\u003etuple\u003c/code\u003e, \u003ccode\u003edict\u003c/code\u003e, and \u003ccode\u003estr\u003c/code\u003e, enabling go-to-definition directly from hint overlays.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Messages\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting \u0026amp; Coverage\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Public symbol filtering is available via \u003ccode\u003epyrefly report --public-only\u003c/code\u003e, using cross-module tracing to report only public symbols.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- TypedDict subset checks are now cached on the Solver, reducing CPU time by ~5.3x and wall time by ~6.7x on pydantic (from 9.5s to 1.4s).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration \u0026amp; Initialization\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- \u003ccode\u003epyrefly init\u003c/code\u003e supports \u003ccode\u003e--dry-run\u003c/code\u003e for safe previews without writing files, and \u003ccode\u003e--print-config\u003c/code\u003e for machine-readable TOML output.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e9\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3099\"\u003e#3099\u003c/a\u003e: Fixed an issue where property setters and deleters inflated typable counts in \u003ccode\u003epyrefly report\u003c/code\u003e by incorrectly counting their trivial \u003ccode\u003e-\u0026gt; None\u003c/code\u003e return types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3098\"\u003e#3098\u003c/a\u003e: Fixed an issue where overloads in \u003ccode\u003epyrefly report\u003c/code\u003e were not deduplicated, causing parameters and callable signatures to be counted multiple times and inflate coverage metrics.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3067\"\u003e#3067\u003c/a\u003e: Fixed an issue where the type display path was dropping the unpack marker (\u003ccode\u003e*\u003c/code\u003e) for direct \u003ccode\u003eTypeVarTuple\u003c/code\u003e arguments, causing \u003ccode\u003eShape\u003c/code\u003e to render bare instead of \u003ccode\u003e*Shape\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3040\"\u003e#3040\u003c/a\u003e: Fixed an issue where properties on metaclasses were not taking precedence over properties on the class during class-level attribute access, causing false \u003ccode\u003ebad-assignment\u003c/code\u003e and \u003ccode\u003ebad-return\u003c/code\u003e errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3150\"\u003e#3150\u003c/a\u003e: Fixed an issue where type aliases were inflating type coverage in \u003ccode\u003epyrefly report\u003c/code\u003e by being counted as typable entities.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3041\"\u003e#3041\u003c/a\u003e: Fixed a panic during workspace/symbol requests on re-exported symbols with multi-byte UTF-8 characters, caused by using the canonical module's byte offset against the re-exporting file's buffer.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3109\"\u003e#3109\u003c/a\u003e: Added a new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint that warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type, making the conversion redundant.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3187\"\u003e#3187\u003c/a\u003e: Fixed a panic in \u003ccode\u003epyrefly report\u003c/code\u003e when \u003ccode\u003e@no_type_check\u003c/code\u003e decorator was used, caused by a missing key lookup for skipped parameter annotations.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3090\"\u003e#3090\u003c/a\u003e: Improved the unused-coroutine error message when an \u003ccode\u003eawait\u003c/code\u003e expression already has \u003ccode\u003eawait\u003c/code\u003e but produces a coroutine due to an incorrect return type annotation on the function definition.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --upgrade pyrefly==0.63.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e765bc651ba4017f8e83872c62e497054edd922d\"\u003e\u003ccode\u003ee765bc6\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/599bee32312972878756d0f54b36c161bad9598f\"\u003e\u003ccode\u003e599bee3\u003c/code\u003e\u003c/a\u003e better inlay hints docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a4ff846acb0ce215b7a15c0253f150b0a506b099\"\u003e\u003ccode\u003ea4ff846\u003c/code\u003e\u003c/a\u003e Add module uri to module tsp types (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/625877be165908162f4b875fba99daa61cb3e9cf\"\u003e\u003ccode\u003e625877b\u003c/code\u003e\u003c/a\u003e Implement multi-connection architecture (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3218\"\u003e#3218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/252c52a3f8d0cbe902eb58aee929028f9375cff6\"\u003e\u003ccode\u003e252c52a\u003c/code\u003e\u003c/a\u003e move process_event into own block\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/18bb101c9061de6f42a698bd827f6e9248de6bed\"\u003e\u003ccode\u003e18bb101\u003c/code\u003e\u003c/a\u003e factor out snapshot_changed_notification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/447f5f97e8badeff4a55e329d83fe4e67dc6ca8b\"\u003e\u003ccode\u003e447f5f9\u003c/code\u003e\u003c/a\u003e add set_experimental to server\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/84bdff6a151aec92969eea662a52cb24c1641a5b\"\u003e\u003ccode\u003e84bdff6\u003c/code\u003e\u003c/a\u003e Consolidate response helpers and extract parse_tsp_request\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/66b487bf83de7b00b0f615966c70b7ec290c4a2e\"\u003e\u003ccode\u003e66b487b\u003c/code\u003e\u003c/a\u003e Rename TspServer to TspConnection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/43ec5ac1260b56cea8c9be45548751fb949c34d6\"\u003e\u003ccode\u003e43ec5ac\u003c/code\u003e\u003c/a\u003e Add IPC transport for TSP connections (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3217\"\u003e#3217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.62.0...0.63.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\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/P4suta/mojiokoshi/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/P4suta%2Fmojiokoshi/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/packages"},{"uuid":"4416789489","node_id":"PR_kwDORzxjSM7aC88A","number":72,"state":"closed","title":"chore(deps-dev): bump the dev group across 1 directory with 47 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-31T20:45:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-10T20:48:23.000Z","updated_at":"2026-05-31T20:45:59.000Z","time_to_close":1814254,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":47,"packages":[{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"faker","old_version":"40.11.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.38.3","new_version":"1.39.3","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.7","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"types-aiofiles","old_version":"25.1.0.20251011","new_version":"25.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"7.0.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260130","new_version":"1.3.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260322","new_version":"0.22.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-jsonschema","old_version":"4.26.0.20260202","new_version":"4.26.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20250809","new_version":"6.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20250809","new_version":"4.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20260322","new_version":"26.4.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.5.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20251117","new_version":"1.1.11.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20250822","new_version":"3.3.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260322","new_version":"3.1.5.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260127","new_version":"4.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"6.32.1.20260221","new_version":"7.34.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260130","new_version":"7.2.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260509","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20251220","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260323","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260323","new_version":"311.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.2.28.20260301","new_version":"2026.5.9.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20250917","new_version":"2.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20250822","new_version":"3.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260322","new_version":"2.18.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260303","new_version":"4.67.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.73","new_version":"1.43.6","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260124","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.9","new_version":"6.152.5","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260316","new_version":"2.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260210","new_version":"82.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.17.1.3","new_version":"1.17.1.4","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"types-python-http-client","old_version":"3.3.7.20250708","new_version":"3.3.7.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"2.0.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.57.1","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 47 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [faker](https://github.com/joke2k/faker) | `40.11.0` | `40.15.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.38.3` | `1.39.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.15.12` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20251011` | `25.1.0.20260508` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `7.0.0.20260503` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260504` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260130` | `1.3.1.20260508` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260322` | `0.22.3.20260508` |\n| [types-jsonschema](https://github.com/python/typeshed) | `4.26.0.20260202` | `4.26.0.20260508` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20250809` | `6.0.0.20260508` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20250809` | `4.1.0.20260508` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20260322` | `26.4.0.20260508` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.5.0.20260508` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20251117` | `1.1.11.20260508` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260508` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20250822` | `3.3.0.20260508` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260508` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260508` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260322` | `3.1.5.20260508` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260127` | `4.9.0.20260508` |\n| [types-protobuf](https://github.com/python/typeshed) | `6.32.1.20260221` | `7.34.1.20260508` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260130` | `7.2.2.20260508` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260509` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260508` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20251220` | `1.1.0.20260508` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260323` | `2.9.0.20260508` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260323` | `311.0.0.20260508` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260510` |\n| [types-regex](https://github.com/python/typeshed) | `2026.2.28.20260301` | `2026.5.9.20260510` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20250917` | `2.1.0.20260508` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20250822` | `3.20.0.20260508` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260322` | `2.18.0.20260508` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260303` | `4.67.3.20260508` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.73` | `1.43.6` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260124` | `1.1.0.20260508` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.9` | `6.152.5` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260316` | `2.0.0.20260508` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260210` | `82.0.0.20260508` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.17.1.3` | `1.17.1.4` |\n| [types-python-http-client](https://github.com/python/typeshed) | `3.3.7.20250708` | `3.3.7.20260408` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.0.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.57.1` | `0.64.1` |\n\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.11.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.38.3 to 1.39.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5f6672701c5b6a739563894256418845239be2a2\"\u003e\u003ccode\u003e5f66727\u003c/code\u003e\u003c/a\u003e 1.39.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/d8741dfc88be16e11c66cceff78e6e2634ddf49b\"\u003e\u003ccode\u003ed8741df\u003c/code\u003e\u003c/a\u003e hopefully fix docs deployment job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ceb200c192bb53629b4c62fdc082ec27b108f316\"\u003e\u003ccode\u003eceb200c\u003c/code\u003e\u003c/a\u003e 1.39.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eb7a92cacd2697acb4e36e2f3147333588c88fa7\"\u003e\u003ccode\u003eeb7a92c\u003c/code\u003e\u003c/a\u003e try to fix browser-basedpyright being published with nothing in it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/dec5306e9aabbce3f9b1b9ec283981d92dd43d80\"\u003e\u003ccode\u003edec5306\u003c/code\u003e\u003c/a\u003e update package-lock.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/335e48619fa223fe3be0b6560d746a10934509c8\"\u003e\u003ccode\u003e335e486\u003c/code\u003e\u003c/a\u003e fix failing tests from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/bbe71b686e84ebbff7699d35dab3376d411bb99d\"\u003e\u003ccode\u003ebbe71b6\u003c/code\u003e\u003c/a\u003e delete newly added github action from upstream that we don't use\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/8f2261891e8ceb278963e84658ebaf054b88e559\"\u003e\u003ccode\u003e8f22618\u003c/code\u003e\u003c/a\u003e update prettierignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ff1f5a4af835b14927545c8890b303f48553acac\"\u003e\u003ccode\u003eff1f5a4\u003c/code\u003e\u003c/a\u003e fix compile errors from merge\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.38.3...v1.39.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.7 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.7...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20251011 to 25.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260317 to 7.0.0.20260503\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20250801 to 0.4.15.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20250822 to 0.7.0.20260504\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260130 to 1.3.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260322 to 0.22.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jsonschema` from 4.26.0.20260202 to 4.26.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20250809 to 6.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20250809 to 4.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 25.9.0.20260322 to 26.4.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.3.0.20251206 to 3.5.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20251117 to 1.1.11.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20250822 to 3.3.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20240907 to 3.6.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20240806 to 0.47.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260322 to 3.1.5.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260127 to 4.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 6.32.1.20260221 to 7.34.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260130 to 7.2.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260223 to 2.9.21.20260509\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.19.0.20251121 to 2.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20251220 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260323 to 2.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260323 to 311.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20250915 to 6.0.12.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.2.28.20260301 to 2026.5.9.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20250917 to 2.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20250822 to 3.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-six` from 1.17.0.20251009 to 1.17.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260322 to 2.18.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.3.20260303 to 4.67.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.42.73 to 1.43.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.1.0.20260124 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.9 to 6.152.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.5\u003c/h2\u003e\n\u003cp\u003eThis patch improves the \u0026quot;Phase.explain\u0026quot; phase so that simple cases\nlike \u0026quot;assert n1 == n2\u0026quot; no longer get a misleading \u0026quot;# or any other\ngenerated value\u0026quot; comment (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4715\"\u003e#4715\u003c/a\u003e). Before falling back to random\nsampling, we now also try borrowing values from each other arg slice\nwith matching shape.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-5\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.4\u003c/h2\u003e\n\u003cp\u003eThis patch fixes a rare internal error during \u0026quot;Phase.explain\u0026quot;\nintroduced in version 6.149.0 for certain strategies (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4708\"\u003e#4708\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-4\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.3\u003c/h2\u003e\n\u003cp\u003eThe \u0026quot;hypothesis-urandom\u0026quot; backend now reads from \u0026quot;/dev/urandom\u0026quot; with\nbuffering disabled, which improves the control of those hooking\n\u0026quot;/dev/urandom\u0026quot; to change or read Hypothesis's random decisions.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-3\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.2\u003c/h2\u003e\n\u003cp\u003eThis release further improves printing of generated values, building\non the changes in  version 6.151.11.\u003c/p\u003e\n\u003cp\u003ePrinciple changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eIn many cases where we would have printed a complex expression\nproducing a value, we now print the repr (or a pretty-printed\nversion of it).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdditionally, in some cases where we would print a complex\nexpression that involved a lambda, we are now able to simplify that\nexpression into a more readable one.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-2\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.1\u003c/h2\u003e\n\u003cp\u003eImprove some internal type hints.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-1\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.0\u003c/h2\u003e\n\u003cp\u003eHypothesis generally recommends that the \u0026quot;.hypothesis\u0026quot; directory not\nbe checked into version control. As a result, Hypothesis now\nautomatically creates a \u0026quot;.gitignore\u0026quot; with \u0026quot;*\u0026quot; in the \u0026quot;.hypothesis\u0026quot;\ndirectory, which excludes it from being tracked by git.\u003c/p\u003e\n\u003cp\u003eIf you do want to check \u0026quot;.hypothesis\u0026quot; into git, you can remove the\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/5421485439466b4b35c4eb77164fde46f70929f5\"\u003e\u003ccode\u003e5421485\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.5 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/9c503ea918dd3f1c1083c669e0c6b90a2ee4dbd5\"\u003e\u003ccode\u003e9c503ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4718\"\u003e#4718\u003c/a\u003e from Zac-HD/claude/fix-issue-4715-uonex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c2368879a8b50792215d964415129ce3d2891f6b\"\u003e\u003ccode\u003ec236887\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4724\"\u003e#4724\u003c/a\u003e from HypothesisWorks/DRMacIver/fix-pyiodide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0150df4d2f55b8e9df388054af7c79dc83a4e1f8\"\u003e\u003ccode\u003e0150df4\u003c/code\u003e\u003c/a\u003e Bump pyodide-build to 0.34.3 to fix CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c31c869dba2ba7f9becd05ebb54fc99c5482e333\"\u003e\u003ccode\u003ec31c869\u003c/code\u003e\u003c/a\u003e Document the format-before-push requirement for Claude Code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/96e8d0264844e44852cb69654b6e9de7c3742560\"\u003e\u003ccode\u003e96e8d02\u003c/code\u003e\u003c/a\u003e Simplify explain-phase candidate generation to satisfy 100% coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3582e90029bc27575c5f483f4e510214d212e0c3\"\u003e\u003ccode\u003e3582e90\u003c/code\u003e\u003c/a\u003e Apply shed formatting to test_inquisitor.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/ab0287389b661cf49a54d0cf6f79e2d32381840a\"\u003e\u003ccode\u003eab02873\u003c/code\u003e\u003c/a\u003e Try targeted candidates in explain phase before random sampling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/84f92dcf29229e37f822ba3ba5eea4212d2abf35\"\u003e\u003ccode\u003e84f92dc\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.4 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c6814df503fd6afe4bf03831020572c6be44976b\"\u003e\u003ccode\u003ec6814df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4717\"\u003e#4717\u003c/a\u003e from HypothesisWorks/DRMacIver/issue4708\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.9...hypothesis-python-6.152.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260316 to 2.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260210 to 82.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.17.1.3 to 1.17.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.4\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eapprox_fprime\u003c/code\u003e and \u003ccode\u003enewton\u003c/code\u003e to accept functions returning n-D arrays in \u003ccode\u003escipy.optimize\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e✨ Improved shape-typing support for statistical testing functions in \u003ccode\u003escipy.stats\u003c/code\u003e and FFT shifting functions in \u003ccode\u003escipy.fft\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒️ Enforce \u003ca href=\"https://github.com/zizmorcore/zizmor\"\u003ezizmor\u003c/a\u003e to improve security in GitHub Actions and dependabot (guard against supply-chain attacks, cache poisoning, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_signal_api\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1492\"\u003escipy/scipy-stubs#1492\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_delegators\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1493\"\u003escipy/scipy-stubs#1493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eks_2samp\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1494\"\u003escipy/scipy-stubs#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ebrunnermunzel\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1497\"\u003escipy/scipy-stubs#1497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ef_oneway\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1499\"\u003escipy/scipy-stubs#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ekruskal\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1500\"\u003escipy/scipy-stubs#1500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003esigmaclip\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1501\"\u003escipy/scipy-stubs#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efftpack\u003c/code\u003e: improve return dtypes for real transforms by \u003ca href=\"https://github.com/Deshan-5\"\u003e\u003ccode\u003e@​Deshan-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1509\"\u003escipy/scipy-stubs#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improve \u003ccode\u003elp2{lp,hp,bp,bs}[_zpk]\u003c/code\u003e and \u003ccode\u003ebilinear_zpk\u003c/code\u003e by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1523\"\u003escipy/scipy-stubs#1523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats.dunnett\u003c/code\u003e: support for \u003ccode\u003elongdouble\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1528\"\u003escipy/scipy-stubs#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1532\"\u003escipy/scipy-stubs#1532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e_lib._uarray._backend\u003c/code\u003e: fix \u003ccode\u003ewrap_single_convertor[_instance]\u003c/code\u003e overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1481\"\u003escipy/scipy-stubs#1481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: add vector-valued \u003ccode\u003eapprox_fprime\u003c/code\u003e overload by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1530\"\u003escipy/scipy-stubs#1530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003e[i]fftshift\u003c/code\u003e dtype preservation for int and bool inputs by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1533\"\u003escipy/scipy-stubs#1533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: generalize \u003ccode\u003enewton\u003c/code\u003e overloads to ND arrays by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1534\"\u003escipy/scipy-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e↪️ Workarounds\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: improve CSC and CSR array/matrix constructor compatibility with mypy by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1485\"\u003escipy/scipy-stubs#1485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Monad to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1498\"\u003escipy/scipy-stubs#1498\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Maintenance\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e🔖 prepare for further development by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1480\"\u003escipy/scipy-stubs#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update uv-build requirement from \u0026lt;0.11,\u0026gt;=0.10.9 to \u0026gt;=0.10.9,\u0026lt;0.12 in the actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1482\"\u003escipy/scipy-stubs#1482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ ty 0.0.25 by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1483\"\u003escipy/scipy-stubs#1483\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/ff66e8a4a3b9fec77d32193965e4ad3d9acfea84\"\u003e\u003ccode\u003eff66e8a\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/1ba8ccfa1942dff275792fc486656e3fe12f4ee6\"\u003e\u003ccode\u003e1ba8ccf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1546\"\u003e#1546\u003c/a\u003e from scipy/fix-mypy_primer-comment-workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4beb7de3cc744f24a0f017b81b9a58202e8e9aa\"\u003e\u003ccode\u003eb4beb7d\u003c/code\u003e\u003c/a\u003e 💚 fix mypy_primer comment workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/74945653316a671d475f06f86520f378f3c420b9\"\u003e\u003ccode\u003e7494565\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1545\"\u003e#1545\u003c/a\u003e from scipy/bump-mypy-pyrefly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/12f0735b88e3fe47860b2e4f9a5074a277e0cf50\"\u003e\u003ccode\u003e12f0735\u003c/code\u003e\u003c/a\u003e ⬆️ mypy 1.20.1 and pyrefly 0.60.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b9efc6fb754a4be43ffd7443713f744e419951bf\"\u003e\u003ccode\u003eb9efc6f\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support (\u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/009d10ed67d5e8d3657750bb455d7b7a2cdd8496\"\u003e\u003ccode\u003e009d10e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1544\"\u003e#1544\u003c/a\u003e from scipy/zizmor/update_dprint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cac2b4a50fcc32a7dbd68742d20fc85b05570cca\"\u003e\u003ccode\u003ecac2b4a\u003c/code\u003e\u003c/a\u003e 🔒️ fix zizmor \u003ccode\u003e--pedantic\u003c/code\u003e audits in \u003ccode\u003eupdate_dprint.yml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cab3222674d15ce35370a8852d541439131e6035\"\u003e\u003ccode\u003ecab3222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1543\"\u003e#1543\u003c/a\u003e from scipy/zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/483a2d3d7b95b5cda285ac4788ec66008e06852b\"\u003e\u003ccode\u003e483a2d3\u003c/code\u003e\u003c/a\u003e 💡 ignore zizmor error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.17.1.3...v1.17.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-http-client` from 3.3.7.20250708 to 3.3.7.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.0\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.0.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. There are also changes to options and defaults.\nYou can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eEnable \u003ccode\u003e--local-partial-types\u003c/code\u003e by Default\u003c/h3\u003e\n\u003cp\u003eThis flag affects the inference of types based on assignments in other scopes.\nFor now, explicitly disabling this continues to be supported, but this support will be removed\nin the future as the legacy behaviour is hard to support with other current and future features\nin mypy, like the daemon or the new implementation of flexible redefinitions.\u003c/p\u003e\n\u003cp\u003eContributed by Ivan Levkivskyi, Jukka Lehtosalo, Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/21163\"\u003ePR 21163\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eEnable \u003ccode\u003e--strict-bytes\u003c/code\u003e by Default\u003c/h3\u003e\n\u003cp\u003ePer \u003ca href=\"https://peps.python.org/pep-0688\"\u003ePEP 688\u003c/a\u003e, mypy no longer treats \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e\nvalues as assignable to the \u003ccode\u003ebytes\u003c/code\u003e type.\u003c/p\u003e\n\u003cp\u003eContributed by Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/18371\"\u003ePR 18371\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eNew Behavior for \u003ccode\u003e--allow-redefinition\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe \u003ccode\u003e--allow-redefinition\u003c/code\u003e flag now behaves like \u003ccode\u003e--allow-redefinition-new\u003c/code\u003e in mypy 1.20\nand earlier. The new behavior is generally more flexible. For example, you can have different\ntypes for a variable in different blocks:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# mypy: allow-redefinition\n\u003cp\u003edef foo(cond: bool) -\u0026gt; None:\nif cond:\nfor x in [\u0026quot;a\u0026quot;, \u0026quot;b\u0026quot;]:\n# Type of \u0026quot;x\u0026quot; is \u0026quot;str\u0026quot; here\n...\nelse:\nfor x in [1, 2]:\n# Type of \u0026quot;x\u0026quot; is \u0026quot;int\u0026quot; here\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7a765008a138ec46c579bfc6ef608860cab36033\"\u003e\u003ccode\u003e7a76500\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/5a3ab3b29f03d8baafeced3761e1afc8bd58be79\"\u003e\u003ccode\u003e5a3ab3b\u003c/code\u003e\u003c/a\u003e Changelog for mypy 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21422\"\u003e#21422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f9c86e21e88f96806c65790d604bf1264db39434\"\u003e\u003ccode\u003ef9c86e2\u003c/code\u003e\u003c/a\u003e Some changelog updates for 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21413\"\u003e#21413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/519eaf15e0ceafae30337083577a54c7d3f3b4fe\"\u003e\u003ccode\u003e519eaf1\u003c/code\u003e\u003c/a\u003e Bump librt to 0.10.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21415\"\u003e#21415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/158a6207d6e221cc403e1d556097b5abf5157cdd\"\u003e\u003ccode\u003e158a620\u003c/code\u003e\u003c/a\u003e Fix negative narrowing for containers (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21411\"\u003e#21411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/e556eb93a3c551a320a536879ce0a1608d14d490\"\u003e\u003ccode\u003ee556eb9\u003c/code\u003e\u003c/a\u003e Try fixing mypy mypyc wheels (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21392\"\u003e#21392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f2c97971f5f4dcd749cf87df1e1308ab5754490a\"\u003e\u003ccode\u003ef2c9797\u003c/code\u003e\u003c/a\u003e Expose --num-workers and --native-parser (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21387\"\u003e#21387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/db0cb2f7c68b0f9d43d6ee1ab68117c1550dac39\"\u003e\u003ccode\u003edb0cb2f\u003c/code\u003e\u003c/a\u003e Bump ast-serialize cache version (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21388\"\u003e#21388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/1090ca6d476f629c566250a41204450043a47cf5\"\u003e\u003ccode\u003e1090ca6\u003c/code\u003e\u003c/a\u003e Bump ast-serialize version to 0.3.0 only (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21391\"\u003e#21391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/714ca9f2ac76e7c6dd56e26fd555f69313ba47ab\"\u003e\u003ccode\u003e714ca9f\u003c/code\u003e\u003c/a\u003e [mypyc] Add note about librt.strings thread safety (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21383\"\u003e#21383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.57.1 to 0.64.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.64.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: May 05, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.64.0 bundles \u003cstrong\u003e190 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- You can now pass generic or overloaded callables to higher-order functions and Pyrefly will preserve their structure in the return type. For example, \u003ccode\u003eidentity(identity)\u003c/code\u003e now correctly returns a generic callable instead of degrading to \u003ccode\u003eUnknown\u003c/code\u003e. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Same-scope class rebinds (like \u003ccode\u003eReal = Dummy\u003c/code\u003e after \u003ccode\u003eclass Real\u003c/code\u003e) are now checked against the original class as if it were an implicit \u003ccode\u003etype[Real]\u003c/code\u003e annotation, preventing silent type changes and fixing spurious constructor-call errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Generic classes with missing type arguments in lax mode now default to \u003ccode\u003eAny\u003c/code\u003e instead of raising variance errors, improving consistency with how we handle other incomplete types. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pydantic \u003ccode\u003efield_validator\u003c/code\u003e decorators with \u003ccode\u003emode='before'\u003c/code\u003e and \u003ccode\u003emode='plain'\u003c/code\u003e are now supported, allowing validators to accept broader input types before coercion. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Spurious unpack diagnostics are no longer emitted when the right-hand side involves \u003ccode\u003eNever\u003c/code\u003e (e.g. \u003ccode\u003ea, b, c = never()\u003c/code\u003e or \u003ccode\u003ea, b = (never(), 1)\u003c/code\u003e). The unpack solver is now \u003ccode\u003eNever\u003c/code\u003e-aware, recognizing that the producing expression cannot complete and any error message at the unpack site would be misleading. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- \u003ccode\u003eassert\u003c/code\u003e statements now check that \u003ccode\u003e__bool__\u003c/code\u003e is callable on the test expression, matching the behavior already in place for \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ...\n\n_Description has been truncated_","html_url":"https://github.com/Lraviv/dify-transfer/pull/72","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lraviv%2Fdify-transfer/issues/72","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/72/packages"},{"uuid":"4409771685","node_id":"PR_kwDODM87vM7ZtOzh","number":2190,"state":"closed","title":"chore(deps): Bump pyrefly from 0.64.0 to 0.64.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-08T22:29:15.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-08T22:25:44.000Z","updated_at":"2026-05-08T22:29:17.000Z","time_to_close":211,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","packages":[{"name":"pyrefly","old_version":"0.64.0","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.64.0 to 0.64.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e63fa8d7d9160d3d319569ee2a4439883eaa4c9e\"\u003e\u003ccode\u003ee63fa8d\u003c/code\u003e\u003c/a\u003e remove extensionDependency on ms-python.python (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3326\"\u003e#3326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/15b8f817923a9b3efb8f5192a8ba1359878c3e58\"\u003e\u003ccode\u003e15b8f81\u003c/code\u003e\u003c/a\u003e abstract away python-environment from extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.64.0\u0026new-version=0.64.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/VWS-Python/vws-cli/pull/2190","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/VWS-Python%2Fvws-cli/issues/2190","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2190/packages"},{"uuid":"4389158807","node_id":"PR_kwDOSC4igc7Yps0T","number":29,"state":"closed","title":"Chore(deps): Bump the utilities-minor group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","backend","non-trivial"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-13T06:08:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-06T06:10:38.000Z","updated_at":"2026-05-13T06:08:24.000Z","time_to_close":604664,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-minor","update_count":12,"packages":[{"name":"django-treenode","old_version":"0.23.3","new_version":"0.24.0","repository_url":"https://github.com/fabiocaccamo/django-treenode"},{"name":"drf-spectacular-sidecar","old_version":"2026.4.1","new_version":"2026.5.1","repository_url":"https://github.com/tfranzel/drf-spectacular-sidecar"},{"name":"filelock","old_version":"3.25.2","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"imap-tools","old_version":"1.11.1","new_version":"1.12.1","repository_url":"https://github.com/ikvk/imap_tools"},{"name":"openai","old_version":"2.30.0","new_version":"2.34.0","repository_url":"https://github.com/openai/openai-python"},{"name":"regex","old_version":"2026.3.32","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"sentence-transformers","old_version":"5.3.0","new_version":"5.4.1","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"tantivy","old_version":"0.25.1","new_version":"0.26.0"},{"name":"faker","old_version":"40.12.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"pyrefly","old_version":"0.59.0","new_version":"0.63.1","repository_url":"https://github.com/facebook/pyrefly"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pytz","old_version":"2026.1.1.20260304","new_version":"2026.2.0.20260506","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-minor group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-treenode](https://github.com/fabiocaccamo/django-treenode) | `0.23.3` | `0.24.0` |\n| [drf-spectacular-sidecar](https://github.com/tfranzel/drf-spectacular-sidecar) | `2026.4.1` | `2026.5.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.25.2` | `3.29.0` |\n| [imap-tools](https://github.com/ikvk/imap_tools) | `1.11.1` | `1.12.1` |\n| [openai](https://github.com/openai/openai-python) | `2.30.0` | `2.34.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.3.32` | `2026.4.4` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.3.0` | `5.4.1` |\n| tantivy | `0.25.1` | `0.26.0` |\n| [faker](https://github.com/joke2k/faker) | `40.12.0` | `40.15.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.59.0` | `0.63.1` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n| [types-pytz](https://github.com/python/typeshed) | `2026.1.1.20260304` | `2026.2.0.20260506` |\n\n\nUpdates `django-treenode` from 0.23.3 to 0.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fabiocaccamo/django-treenode/releases\"\u003edjango-treenode's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.24.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ePython 3.14\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDjango 6.0\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eFix skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump test requirements.\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\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/fabiocaccamo/django-treenode/blob/main/CHANGELOG.md\"\u003edjango-treenode's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/releases/tag/0.24.0\"\u003e0.24.0\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ePython 3.14\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDjango 6.0\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eFix skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump test requirements.\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\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/fabiocaccamo/django-treenode/commit/c5afb6cb48d81b4a0d0b8279666e22a6c4f91624\"\u003e\u003ccode\u003ec5afb6c\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003eCHANGELOG\u003c/code\u003e and version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/246de2cfad245d2386617d54dc843ae91c6edb41\"\u003e\u003ccode\u003e246de2c\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/536d7504b02b560c95ec914bf09dffacee8939c0\"\u003e\u003ccode\u003e536d750\u003c/code\u003e\u003c/a\u003e Update tox requirement in the python-requirements group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/214\"\u003e#214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/2c835fb06aacf6fddbe5a64cfcd789b9a40c4b5e\"\u003e\u003ccode\u003e2c835fb\u003c/code\u003e\u003c/a\u003e fix: skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/452bbd165ae9280823394f830f719808e92b6857\"\u003e\u003ccode\u003e452bbd1\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/85f10b447a101f5fe2d9110ec2ccd48da901cf81\"\u003e\u003ccode\u003e85f10b4\u003c/code\u003e\u003c/a\u003e Update coverage requirement in the python-requirements group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/8f71467fddd9db697dec018d4bb97d716e506c37\"\u003e\u003ccode\u003e8f71467\u003c/code\u003e\u003c/a\u003e Update pre-commit hooks. (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/2a572e30696820cd416d6c71c4d925f8638dae36\"\u003e\u003ccode\u003e2a572e3\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request in the github-actions group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/a13fc25c5c70d451f7312ad0879c08c9dca3f074\"\u003e\u003ccode\u003ea13fc25\u003c/code\u003e\u003c/a\u003e Update .pre-commit-config.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/16b84e0350ac6583da522436312bf45d37b9f6f2\"\u003e\u003ccode\u003e16b84e0\u003c/code\u003e\u003c/a\u003e Update FUNDING.yml\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fabiocaccamo/django-treenode/compare/0.23.3...0.24.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular-sidecar` from 2026.4.1 to 2026.5.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/c55ef4d0685114b7cd563485af9c1859f7d0f29b\"\u003e\u003ccode\u003ec55ef4d\u003c/code\u003e\u003c/a\u003e version bump 2026.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/05fbf42eca0a97579a884c5264a0e146673d985c\"\u003e\u003ccode\u003e05fbf42\u003c/code\u003e\u003c/a\u003e version bump 2026.4.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/4ca03e1f015837694091dd3698f4ef6cd8ecf45d\"\u003e\u003ccode\u003e4ca03e1\u003c/code\u003e\u003c/a\u003e Force rebuild for redoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/ab433ec2a85576947809c9039b62c966d5452694\"\u003e\u003ccode\u003eab433ec\u003c/code\u003e\u003c/a\u003e Merge branch 'pr16'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/f14ea06d1572efe0c840cba36570cf866f6fb069\"\u003e\u003ccode\u003ef14ea06\u003c/code\u003e\u003c/a\u003e update github actions due to deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/50ef330d14f39d5221ae30aa3aa4b9b408e10df3\"\u003e\u003ccode\u003e50ef330\u003c/code\u003e\u003c/a\u003e Fix redoc files \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular-sidecar/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/63be86409f10222db354b736811f877238a68a26\"\u003e\u003ccode\u003e63be864\u003c/code\u003e\u003c/a\u003e Fix: update assets list\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/compare/2026.4.1...2026.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.25.2 to 3.29.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.29.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(async): use single-thread executor for lock consistency by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/533\"\u003etox-dev/filelock#533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): enable stale lock detection on Windows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/534\"\u003etox-dev/filelock#534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.28.0...3.29.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.28.0...3.29.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.28.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/529\"\u003etox-dev/filelock#529\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.27.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/528\"\u003etox-dev/filelock#528\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling by \u003ca href=\"https://github.com/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/517\"\u003etox-dev/filelock#517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 fix(ci): restore git credentials for release job by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/520\"\u003etox-dev/filelock#520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/524\"\u003etox-dev/filelock#524\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.25.2...3.26.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.25.2...3.26.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e3.29.0 (2026-04-19)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): enable stale lock detection on Windows :pr:\u003ccode\u003e534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(async): use single-thread executor for lock consistency :pr:\u003ccode\u003e533\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 :pr:\u003ccode\u003e530\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.28.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again :pr:\u003ccode\u003e529\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.1 (2026-04-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling :pr:\u003ccode\u003e518\u003c/code\u003e - by :user:\u003ccode\u003enaarob\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 :pr:\u003ccode\u003e525\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.0 (2026-04-06)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking :pr:\u003ccode\u003e524\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e523\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 :pr:\u003ccode\u003e522\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove persist-credentials: false from release job :pr:\u003ccode\u003e520\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e519\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing :pr:\u003ccode\u003e517\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e516\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e514\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.2 (2026-03-11)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(unix): suppress EIO on close in Docker bind mounts :pr:\u003ccode\u003e513\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.1 (2026-03-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e510\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(win): restore best-effort lock file cleanup on release :pr:\u003ccode\u003e511\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/469b47f192b0a9f8c8b795d9b9f57212c716959b\"\u003e\u003ccode\u003e469b47f\u003c/code\u003e\u003c/a\u003e Release 3.29.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/e85d07281987e0855ba67c03dfdef342ec1097d5\"\u003e\u003ccode\u003ee85d072\u003c/code\u003e\u003c/a\u003e ✨ feat(soft): enable stale lock detection on Windows (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/534\"\u003e#534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f5ee1712ced6916b2768812ee378183319339944\"\u003e\u003ccode\u003ef5ee171\u003c/code\u003e\u003c/a\u003e 🐛 fix(async): use single-thread executor for lock consistency (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/533\"\u003e#533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/2a954588cdf462a786835eeb102240ce79fecc8b\"\u003e\u003ccode\u003e2a95458\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/55de20c0819652362881906fa289feff5a323c19\"\u003e\u003ccode\u003e55de20c\u003c/code\u003e\u003c/a\u003e Release 3.28.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/476b0e4a92776fe530b5d993247342f039004174\"\u003e\u003ccode\u003e476b0e4\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): unbreak release workflow, publish to PyPI again (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/824713edc32b54efd66566907f97c1238502810e\"\u003e\u003ccode\u003e824713e\u003c/code\u003e\u003c/a\u003e ✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/528\"\u003e#528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/9879de9298db93ffba0a9f58d9de75e9e2a00fc1\"\u003e\u003ccode\u003e9879de9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/527\"\u003e#527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4cfab498b6916f89be46152efa4a72e9731be98f\"\u003e\u003ccode\u003e4cfab49\u003c/code\u003e\u003c/a\u003e Release 3.26.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/734c9f26e8107ad24886129fc68865f0b46cf71f\"\u003e\u003ccode\u003e734c9f2\u003c/code\u003e\u003c/a\u003e 🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handli...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.25.2...3.29.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imap-tools` from 1.11.1 to 1.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ikvk/imap_tools/releases\"\u003eimap-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.12.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: BaseMailBox.login now quotes username to handle special IMAP characters (e.g. \u003ccode\u003e*\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/blob/master/docs/release_notes.rst\"\u003eimap-tools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.12.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: BaseMailBox.login now quotes username to handle special IMAP characters (e.g. \u003ccode\u003e*\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.12.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/commit/4ff405b742191ec5ab360ce5b8efb6aeb6786075\"\u003e\u003ccode\u003e4ff405b\u003c/code\u003e\u003c/a\u003e vers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/6443dd61f6c66bec21078ad79020d7fc456a30ba\"\u003e\u003ccode\u003e6443dd6\u003c/code\u003e\u003c/a\u003e Fixes the username quoting when using login with a username containing charac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/74083c4d31e94d9f0b5a0504c8a27f7a1525fd5d\"\u003e\u003ccode\u003e74083c4\u003c/code\u003e\u003c/a\u003e doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/4db25623a72277bf02480757fb28f21fc01addd6\"\u003e\u003ccode\u003e4db2562\u003c/code\u003e\u003c/a\u003e doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/c59a60723b7e6fec353590811ec6ad674110031c\"\u003e\u003ccode\u003ec59a607\u003c/code\u003e\u003c/a\u003e MailMessage.headers - LazyHeaders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/32ddf22fcac2fc80c7ed9ce0a6719d020c9ff57f\"\u003e\u003ccode\u003e32ddf22\u003c/code\u003e\u003c/a\u003e MailMessage.headers docs\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ikvk/imap_tools/compare/v1.11.1...v1.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openai` from 2.30.0 to 2.34.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.33.0...v2.34.0\"\u003ev2.33.0...v2.34.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add external_key_id to projects, email/metadata params to users, update types (\u003ca href=\"https://github.com/openai/openai-python/commit/2d232eebb2fe021bb21f2576b17d1d588f81a608\"\u003e2d232ee\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Admin API Keys per endpoint (\u003ca href=\"https://github.com/openai/openai-python/commit/b8b176af84172f27d2fde8dca062ca4c41f94bf7\"\u003eb8b176a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e admin API updates (\u003ca href=\"https://github.com/openai/openai-python/commit/4ae1138ae1f76e81a2267e4deb45b435c10774d5\"\u003e4ae1138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/c1870f1b881bb914e4e62a6c8b08d4c2b9a6fd54\"\u003ec1870f1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/f6bb9c7d7bdcc45425d37722358bed097e83d493\"\u003ef6bb9c7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport setting headers via env (\u003ca href=\"https://github.com/openai/openai-python/commit/1e89d8b56aba12f99a8ef2b1b78fdee84751275a\"\u003e1e89d8b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eallow explicit Azure auth headers (\u003ca href=\"https://github.com/openai/openai-python/commit/a0626babf0548fb03cf3c2d054da116dd6466701\"\u003ea0626ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e correct prompt_cache_retention enum value from in-memory to in_memory (\u003ca href=\"https://github.com/openai/openai-python/commit/d47d9f0f79c612c4d14005a0a3cf44e1968c9bff\"\u003ed47d9f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e preserve python api key attribute type (\u003ca href=\"https://github.com/openai/openai-python/commit/62607f61c542ed559ef114849e31307c0c290286\"\u003e62607f6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e resolve python auth type checks (\u003ca href=\"https://github.com/openai/openai-python/commit/42a31a7efb6784633108c1a73e1779ed79ab8bed\"\u003e42a31a7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e support admin api key auth (\u003ca href=\"https://github.com/openai/openai-python/commit/f029eb937f976110c1a67b9342525a38a214072e\"\u003ef029eb9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eavoid bearer fallback for admin auth (\u003ca href=\"https://github.com/openai/openai-python/commit/22e01a8cf791a143ecc576f46de50eee9b3c2147\"\u003e22e01a8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epreserve selected auth credentials (\u003ca href=\"https://github.com/openai/openai-python/commit/0d27f9dbd3b2ae82b2e8c2eeb9e7e78f3edecdf1\"\u003e0d27f9d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erequire bearer auth for stream helpers (\u003ca href=\"https://github.com/openai/openai-python/commit/d0555390bcf4a704c10d318c7de2fe006750c3d0\"\u003ed055539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e correct created_at and completed_at to float in Response (\u003ca href=\"https://github.com/openai/openai-python/commit/7da4b88c1985028f7ee9a98b919e71f863f979f0\"\u003e7da4b88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e correct timestamp types to int in Response model (\u003ca href=\"https://github.com/openai/openai-python/commit/e55631c868b1d0b720fda0abdbc342787cd95e2c\"\u003ee55631c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse correct field name format for multipart file arrays (\u003ca href=\"https://github.com/openai/openai-python/commit/9ee482576c2bd6b33b6cf7458c37ab2e7d5bc725\"\u003e9ee4825\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e optimize file structure copying in multipart requests (\u003ca href=\"https://github.com/openai/openai-python/commit/dca474e5beac7cc8e05855f042c3227843030c1b\"\u003edca474e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e more robust bootstrap script (\u003ca href=\"https://github.com/openai/openai-python/commit/9ec1600d48fda10abb144b2a62d07c5abd7e9ab1\"\u003e9ec1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e reformat pyproject.toml (\u003ca href=\"https://github.com/openai/openai-python/commit/12ad57b8da5b5c0615641af273d4bbf2981d6bf7\"\u003e12ad57b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.22.1 (\u003ca href=\"https://github.com/openai/openai-python/commit/486dfedfec8484bb00318b0ea798c2260f7a720c\"\u003e486dfed\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add rate limit and vector store info to files create (\u003ca href=\"https://github.com/openai/openai-python/commit/4f776df78d757fdbf25662c4be98b5c98183aaaf\"\u003e4f776df\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update files rate limit documentation (\u003ca href=\"https://github.com/openai/openai-python/commit/b141a20e948b5af3b8fbe4261798c191d2857b4a\"\u003eb141a20\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.33.0\u003c/h2\u003e\n\u003ch2\u003e2.33.0 (2026-04-28)\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/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.0 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.33.0...v2.34.0\"\u003ev2.33.0...v2.34.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add external_key_id to projects, email/metadata params to users, update types (\u003ca href=\"https://github.com/openai/openai-python/commit/2d232eebb2fe021bb21f2576b17d1d588f81a608\"\u003e2d232ee\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Admin API Keys per endpoint (\u003ca href=\"https://github.com/openai/openai-python/commit/b8b176af84172f27d2fde8dca062ca4c41f94bf7\"\u003eb8b176a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e admin API updates (\u003ca href=\"https://github.com/openai/openai-python/commit/4ae1138ae1f76e81a2267e4deb45b435c10774d5\"\u003e4ae1138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/c1870f1b881bb914e4e62a6c8b08d4c2b9a6fd54\"\u003ec1870f1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/f6bb9c7d7bdcc45425d37722358bed097e83d493\"\u003ef6bb9c7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport setting headers via env (\u003ca href=\"https://github.com/openai/openai-python/commit/1e89d8b56aba12f99a8ef2b1b78fdee84751275a\"\u003e1e89d8b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eallow explicit Azure auth headers (\u003ca href=\"https://github.com/openai/openai-python/commit/a0626babf0548fb03cf3c2d054da116dd6466701\"\u003ea0626ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e correct prompt_cache_retention enum value from in-memory to in_memory (\u003ca href=\"https://github.com/openai/openai-python/commit/d47d9f0f79c612c4d14005a0a3cf44e1968c9bff\"\u003ed47d9f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e preserve python api key attribute type (\u003ca href=\"https://github.com/openai/openai-python/commit/62607f61c542ed559ef114849e31307c0c290286\"\u003e62607f6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e resolve python auth type checks (\u003ca href=\"https://github.com/openai/openai-python/commit/42a31a7efb6784633108c1a73e1779ed79ab8bed\"\u003e42a31a7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e support admin api key auth (\u003ca href=\"https://github.com/openai/openai-python/commit/f029eb937f976110c1a67b9342525a38a214072e\"\u003ef029eb9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eavoid bearer fallback for admin auth (\u003ca href=\"https://github.com/openai/openai-python/commit/22e01a8cf791a143ecc576f46de50eee9b3c2147\"\u003e22e01a8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epreserve selected auth credentials (\u003ca href=\"https://github.com/openai/openai-python/commit/0d27f9dbd3b2ae82b2e8c2eeb9e7e78f3edecdf1\"\u003e0d27f9d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erequire bearer auth for stream helpers (\u003ca href=\"https://github.com/openai/openai-python/commit/d0555390bcf4a704c10d318c7de2fe006750c3d0\"\u003ed055539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e correct created_at and completed_at to float in Response (\u003ca href=\"https://github.com/openai/openai-python/commit/7da4b88c1985028f7ee9a98b919e71f863f979f0\"\u003e7da4b88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e correct timestamp types to int in Response model (\u003ca href=\"https://github.com/openai/openai-python/commit/e55631c868b1d0b720fda0abdbc342787cd95e2c\"\u003ee55631c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse correct field name format for multipart file arrays (\u003ca href=\"https://github.com/openai/openai-python/commit/9ee482576c2bd6b33b6cf7458c37ab2e7d5bc725\"\u003e9ee4825\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e optimize file structure copying in multipart requests (\u003ca href=\"https://github.com/openai/openai-python/commit/dca474e5beac7cc8e05855f042c3227843030c1b\"\u003edca474e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e more robust bootstrap script (\u003ca href=\"https://github.com/openai/openai-python/commit/9ec1600d48fda10abb144b2a62d07c5abd7e9ab1\"\u003e9ec1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e reformat pyproject.toml (\u003ca href=\"https://github.com/openai/openai-python/commit/12ad57b8da5b5c0615641af273d4bbf2981d6bf7\"\u003e12ad57b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.22.1 (\u003ca href=\"https://github.com/openai/openai-python/commit/486dfedfec8484bb00318b0ea798c2260f7a720c\"\u003e486dfed\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add rate limit and vector store info to files create (\u003ca href=\"https://github.com/openai/openai-python/commit/4f776df78d757fdbf25662c4be98b5c98183aaaf\"\u003e4f776df\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update files rate limit documentation (\u003ca href=\"https://github.com/openai/openai-python/commit/b141a20e948b5af3b8fbe4261798c191d2857b4a\"\u003eb141a20\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.33.0 (2026-04-28)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.32.0...v2.33.0\"\u003ev2.32.0...v2.33.0\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/9370977d155464e499de2ac05ee3e99fcd694fa3\"\u003e\u003ccode\u003e9370977\u003c/code\u003e\u003c/a\u003e release: 2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/529e3b746c5c1bf562eba6e37f8a30eab2a0106b\"\u003e\u003ccode\u003e529e3b7\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/8428b0f2cf64f3d9a8ce188823e034ee35eac110\"\u003e\u003ccode\u003e8428b0f\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/a4c01ec71e19af034af09ab6fa00bac693f8d66a\"\u003e\u003ccode\u003ea4c01ec\u003c/code\u003e\u003c/a\u003e feat(api): add external_key_id to projects, email/metadata params to users, u...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/b1417cc7702af9b9edf0519d03bd3d780ecf5047\"\u003e\u003ccode\u003eb1417cc\u003c/code\u003e\u003c/a\u003e feat(api): admin API updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/d05f3a875fc78519711067350605d6226aed33b8\"\u003e\u003ccode\u003ed05f3a8\u003c/code\u003e\u003c/a\u003e feat(api): manual updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/42b2b60af44566ce3d1d6d37f2bb9d77274e65dd\"\u003e\u003ccode\u003e42b2b60\u003c/code\u003e\u003c/a\u003e fix(types): correct created_at and completed_at to float in Response\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/15a9e05ada36a126f3ad9fab0eada8ad62b8389c\"\u003e\u003ccode\u003e15a9e05\u003c/code\u003e\u003c/a\u003e fix: allow explicit Azure auth headers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/9e4efd13bca6730d150cffba12151cc7c5f0e70a\"\u003e\u003ccode\u003e9e4efd1\u003c/code\u003e\u003c/a\u003e fix: avoid bearer fallback for admin auth\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c99535c716f90a1e10cc40a8618103ba1c5c2e49\"\u003e\u003ccode\u003ec99535c\u003c/code\u003e\u003c/a\u003e fix: preserve selected auth credentials\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.30.0...v2.34.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `regex` from 2026.3.32 to 2026.4.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/bc57b04b00de68590345ac2eb621b9a8dd222d7d\"\u003e\u003ccode\u003ebc57b04\u003c/code\u003e\u003c/a\u003e A fix for older Python versions before free-threading was  supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/773e213b5d7a78806e795d2513a37345dc793e97\"\u003e\u003ccode\u003e773e213\u003c/code\u003e\u003c/a\u003e More fixes for free-threading.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.3.32...2026.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentence-transformers` from 5.3.0 to 5.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/sentence-transformers/releases\"\u003esentence-transformers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.4.1 - Numpy string arrays\u003c/h2\u003e\n\u003cp\u003eThis patch release allows \u003ccode\u003eencode()\u003c/code\u003e and \u003ccode\u003epredict()\u003c/code\u003e to accept 1D numpy string arrays as inputs.\u003c/p\u003e\n\u003cp\u003eInstall this version with\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003e# Training + Inference\r\npip install sentence-transformers[train]==5.4.1\r\n\u003ch1\u003eInference only, use one of:\u003c/h1\u003e\n\u003cp\u003epip install sentence-transformers==5.4.1\npip install sentence-transformers[onnx-gpu]==5.4.1\npip install sentence-transformers[onnx]==5.4.1\npip install sentence-transformers[openvino]==5.4.1\u003c/p\u003e\n\u003ch1\u003eMultimodal dependencies (optional):\u003c/h1\u003e\n\u003cp\u003epip install sentence-transformers[image]==5.4.1\npip install sentence-transformers[audio]==5.4.1\npip install sentence-transformers[video]==5.4.1\u003c/p\u003e\n\u003ch1\u003eOr combine as needed:\u003c/h1\u003e\n\u003cp\u003epip install sentence-transformers[train,onnx,image]==5.4.1\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch2\u003eNumpy string/object arrays as batches (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3720\"\u003e#3720\u003c/a\u003e)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eencode()\u003c/code\u003e and \u003ccode\u003epredict()\u003c/code\u003e now correctly recognize 1D numpy string/object arrays as batches rather than singular inputs. Previously, something like \u003ccode\u003emodel.encode(df[\u0026quot;text\u0026quot;].to_numpy())\u003c/code\u003e was silently treated as a single input and produced incorrect output. 1D numpy arrays with \u003ccode\u003edtype.kind\u003c/code\u003e in \u003ccode\u003e(\u0026quot;U\u0026quot;, \u0026quot;O\u0026quot;)\u003c/code\u003e are now unpacked like lists, and 2D+ arrays are treated as batches of pairs (for \u003ccode\u003eCrossEncoder\u003c/code\u003e).\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport numpy as np\r\nfrom sentence_transformers import SentenceTransformer\r\n\u003cp\u003emodel = SentenceTransformer(\u0026quot;all-MiniLM-L6-v2\u0026quot;)\u003c/p\u003e\n\u003ch1\u003ePreviously treated as one input; now correctly encoded as 3 separate texts\u003c/h1\u003e\n\u003cp\u003eembeddings = model.encode(np.array([\u0026quot;first\u0026quot;, \u0026quot;second\u0026quot;, \u0026quot;third\u0026quot;]))\nprint(embeddings.shape)\u003c/p\u003e\n\u003ch1\u003e(3, 384)\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eFor \u003ccode\u003eCrossEncoder\u003c/code\u003e, a 1D numpy string array is still treated as a single \u003ccode\u003e[query, document]\u003c/code\u003e pair to match the existing list behavior, while a 2D array of shape \u003ccode\u003e(N, 2)\u003c/code\u003e is a batch of \u003ccode\u003eN\u003c/code\u003e pairs.\u003c/p\u003e\n\u003ch2\u003eSafer activation function loading in \u003ccode\u003eDense\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3714\"\u003e#3714\u003c/a\u003e)\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003eDense\u003c/code\u003e module stores its activation function as a dotted import path in its saved config (e.g. \u003ccode\u003e\u0026quot;torch.nn.modules.activation.Tanh\u0026quot;\u003c/code\u003e), which was then resolved via \u003ccode\u003eimport_from_string\u003c/code\u003e whenever the module was loaded. Because any importable Python callable could be referenced, a maliciously crafted \u003ccode\u003econfig.json\u003c/code\u003e on the Hub could trigger arbitrary imports at model load time.\u003c/p\u003e\n\u003cp\u003eThe loader now only resolves activation functions whose import path starts with \u003ccode\u003etorch.\u003c/code\u003e. Anything else is skipped with a warning and replaced by the default activation (\u003ccode\u003eTanh\u003c/code\u003e). To load a model with a custom (non-torch) activation function, opt in explicitly with \u003ccode\u003etrust_remote_code=True\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom sentence_transformers import SentenceTransformer\r\n\u003cp\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/6dc2cb57e5c680275e9e5fbf62bba0351f124385\"\u003e\u003ccode\u003e6dc2cb5\u003c/code\u003e\u003c/a\u003e Release v5.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/a6a371caa4eaeec980a224d66d53abaf5fb30f9c\"\u003e\u003ccode\u003ea6a371c\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into v5.4-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/c500af50eb597aba2523024d98a842cde064c3fe\"\u003e\u003ccode\u003ec500af5\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003efix\u003c/code\u003e] Treat numpy string/object arrays as batches in encode/predict (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/25f0694290dbee841e39343551e82799e34648e6\"\u003e\u003ccode\u003e25f0694\u003c/code\u003e\u003c/a\u003e Only load activation functions starting with 'torch' in the Dense module (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3714\"\u003e#3714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/9140444351440b54da35622b38484fcfb1f4d437\"\u003e\u003ccode\u003e9140444\u003c/code\u003e\u003c/a\u003e Replace evaluation_strategy with eval_strategy in a few more places (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3713\"\u003e#3713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/cec9077572ca34c207bb5709463b33a31b6a2744\"\u003e\u003ccode\u003ecec9077\u003c/code\u003e\u003c/a\u003e No revision needed anymore for nvidia nemotron (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3712\"\u003e#3712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/5035ccd4fca1ac6cff3db0601ba8b888934e9b63\"\u003e\u003ccode\u003e5035ccd\u003c/code\u003e\u003c/a\u003e No revision needed anymore for nvidia nemotron (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3712\"\u003e#3712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/abca5aa6150d24f25746036fc3050c4673e201c0\"\u003e\u003ccode\u003eabca5aa\u003c/code\u003e\u003c/a\u003e Increment dev version after v5.4 release (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3711\"\u003e#3711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/d36232b82bc1e81f9088f85c5f6c044bf1ff5a57\"\u003e\u003ccode\u003ed36232b\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003etests\u003c/code\u003e] Fix test_trainer_prompts for SE and ST after prompt handling moved ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/fe9361218c10b2ee18f497d73863788a6b592210\"\u003e\u003ccode\u003efe93612\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into v5.4-release\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/sentence-transformers/compare/v5.3.0...v5.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tantivy` from 0.25.1 to 0.26.0\n\nUpdates `faker` from 40.12.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.59.0 to 0.63.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.63.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.0...0.63.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.63.0...0.63.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.63.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: April 27, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.63.0 bundles \u003cstrong\u003e129 commits\u003c/strong\u003e from \u003cstrong\u003e26 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Enum member types are preserved even when the metaclass conflicts with \u003ccode\u003eEnumMeta\u003c/code\u003e, reducing noise in projects using custom metaclasses with enums. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Constrained \u003ccode\u003eTypeVar\u003c/code\u003es no longer get pinned to a specific constraint when matched against \u003ccode\u003eAny\u003c/code\u003e, preventing false positives. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Self/cls annotations on all methods and classmethods are validated to ensure they reference the defining class or a superclass, catching more annotation errors.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The LSP now reports \u003ccode\u003eunused-ignore\u003c/code\u003e diagnostics when configured to do so, helping you clean up stale suppression comments. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Completions for attribute override definitions are available in class bodies, surfacing base-class members filtered by fuzzy match. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The LSP server no longer crashes on Jupyter notebook cell URIs (\u003ccode\u003evscode-notebook-cell:\u003c/code\u003e), with full support for resolving notebook cell paths and position offsets. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Workspace symbol search uses the correct location for re-exported symbols, preventing panics on multi-byte UTF-8 characters. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Inlay hints are clickable for built-in types like \u003ccode\u003etuple\u003c/code\u003e, \u003ccode\u003edict\u003c/code\u003e, and \u003ccode\u003estr\u003c/code\u003e, enabling go-to-definition directly from hint overlays.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Messages\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting \u0026amp; Coverage\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Public symbol filtering is available via \u003ccode\u003epyrefly report --public-only\u003c/code\u003e, using cross-module tracing to report only public symbols.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- TypedDict subset checks are now cached on the Solver, reducing CPU time by ~5.3x and wall time by ~6.7x on pydantic (from 9.5s to 1.4s).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration \u0026amp; Initialization\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- \u003ccode\u003epyrefly init\u003c/code\u003e supports \u003ccode\u003e--dry-run\u003c/code\u003e for safe previews without writing files, and \u003ccode\u003e--print-config\u003c/code\u003e for machine-readable TOML output.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e9\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3099\"\u003e#3099\u003c/a\u003e: Fixed an issue where property setters and deleters inflated typable counts in \u003ccode\u003epyrefly report\u003c/code\u003e by incorrectly counting their trivial \u003ccode\u003e-\u0026gt; None\u003c/code\u003e return types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3098\"\u003e#3098\u003c/a\u003e: Fixed an issue where overloads in \u003ccode\u003epyrefly report\u003c/code\u003e were not deduplicated, causing parameters and callable signatures to be counted multiple times and inflate coverage metrics.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3067\"\u003e#3067\u003c/a\u003e: Fixed an issue where the type display path was dropping the unpack marker (\u003ccode\u003e*\u003c/code\u003e) for direct \u003ccode\u003eTypeVarTuple\u003c/code\u003e arguments, causing \u003ccode\u003eShape\u003c/code\u003e to render bare instead of \u003ccode\u003e*Shape\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3040\"\u003e#3040\u003c/a\u003e: Fixed an issue where properties on metaclasses were not taking precedence over properties on the class during class-level attribute access, causing false \u003ccode\u003ebad-assignment\u003c/code\u003e and \u003ccode\u003ebad-return\u003c/code\u003e errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3150\"\u003e#3150\u003c/a\u003e: Fixed an issue where type aliases were inflating type coverage in \u003ccode\u003epyrefly report\u003c/code\u003e by being counted as typable entities.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3041\"\u003e#3041\u003c/a\u003e: Fixed a panic during workspace/symbol requests on re-exported symbols with multi-byte UTF-8 characters, caused by using the canonical module's byte offset against the re-exporting file's buffer.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3109\"\u003e#3109\u003c/a\u003e: Added a new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint that warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type, making the conversion redundant.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3187\"\u003e#3187\u003c/a\u003e: Fixed a panic in \u003ccode\u003epyrefly report\u003c/code\u003e when \u003ccode\u003e@no_type_check\u003c/code\u003e decorator was used, caused by a missing key lookup for skipped parameter annotations.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3090\"\u003e#3090\u003c/a\u003e: Improved the unused-coroutine error message when an \u003ccode\u003eawait\u003c/code\u003e expression already has \u003ccode\u003eawait\u003c/code\u003e but produces a coroutine due to an incorrect return type annotation on the function definition.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --upgrade pyrefly==0.63.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e765bc651ba4017f8e83872c62e497054edd922d\"\u003e\u003ccode\u003ee765bc6\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/599bee32312972878756d0f54b36c161bad9598f\"\u003e\u003ccode\u003e599bee3\u003c/code\u003e\u003c/a\u003e better inlay hints docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a4ff846acb0ce215b7a15c0253f150b0a506b099\"\u003e\u003ccode\u003ea4ff846\u003c/code\u003e\u003c/a\u003e Add module uri to module tsp types (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/625877be165908162f4b875fba99daa61cb3e9cf\"\u003e\u003ccode\u003e625877b\u003c/code\u003e\u003c/a\u003e Implement multi-connection architecture (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3218\"\u003e#3218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/252c52a3f8d0cbe902eb58aee929028f9375cff6\"\u003e\u003ccode\u003e252c52a\u003c/code\u003e\u003c/a\u003e move process_event into own block\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/18bb101c9061de6f42a698bd827f6e9248de6bed\"\u003e\u003ccode\u003e18bb101\u003c/code\u003e\u003c/a\u003e factor out snapshot_changed_notification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/447f5f97e8badeff4a55e329d83fe4e67dc6ca8b\"\u003e\u003ccode\u003e447f5f9\u003c/code\u003e\u003c/a\u003e add set_experimental to server\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/84bdff6a151aec92969eea662a52cb24c1641a5b\"\u003e\u003ccode\u003e84bdff6\u003c/code\u003e\u003c/a\u003e Consolidate response helpers and extract parse_tsp_request\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/66b487bf83de7b00b0f615966c70b7ec290c4a2e\"\u003e\u003ccode\u003e66b487b\u003c/code\u003e\u003c/a\u003e Rename TspServer to TspConnection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/43ec5ac1260b56cea8c9be45548751fb949c34d6\"\u003e\u003ccode\u003e43ec5ac\u003c/code\u003e\u003c/a\u003e Add IPC transport for TSP connections (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3217\"\u003e#3217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.59.0...0.63.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.19.0.20251121 to 2.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pytz` from 2026.1.1.20260304 to 2026.2.0.20260506\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/ariamalmohsen-git/CYS402/pull/29","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ariamalmohsen-git%2FCYS402/issues/29","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/29/packages"},{"uuid":"4382114504","node_id":"PR_kwDORms75s7YSrIx","number":30,"state":"closed","title":"deps: bump the python-dependencies group with 3 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-09T05:43:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-05T06:45:53.000Z","updated_at":"2026-05-09T05:43:48.000Z","time_to_close":341874,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"python-dependencies","update_count":3,"packages":[{"name":"fastapi","old_version":"0.136.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pyrefly","old_version":"0.62.0","new_version":"0.63.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"ruff","old_version":"0.15.11","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 3 updates: [fastapi](https://github.com/fastapi/fastapi), [pyrefly](https://github.com/facebook/pyrefly) and [ruff](https://github.com/astral-sh/ruff).\n\nUpdates `fastapi` from 0.136.0 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.0...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.62.0 to 0.63.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.63.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: April 27, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.63.0 bundles \u003cstrong\u003e129 commits\u003c/strong\u003e from \u003cstrong\u003e26 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Enum member types are preserved even when the metaclass conflicts with \u003ccode\u003eEnumMeta\u003c/code\u003e, reducing noise in projects using custom metaclasses with enums. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Constrained \u003ccode\u003eTypeVar\u003c/code\u003es no longer get pinned to a specific constraint when matched against \u003ccode\u003eAny\u003c/code\u003e, preventing false positives. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Self/cls annotations on all methods and classmethods are validated to ensure they reference the defining class or a superclass, catching more annotation errors.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The LSP now reports \u003ccode\u003eunused-ignore\u003c/code\u003e diagnostics when configured to do so, helping you clean up stale suppression comments. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Completions for attribute override definitions are available in class bodies, surfacing base-class members filtered by fuzzy match. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The LSP server no longer crashes on Jupyter notebook cell URIs (\u003ccode\u003evscode-notebook-cell:\u003c/code\u003e), with full support for resolving notebook cell paths and position offsets. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Workspace symbol search uses the correct location for re-exported symbols, preventing panics on multi-byte UTF-8 characters. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Inlay hints are clickable for built-in types like \u003ccode\u003etuple\u003c/code\u003e, \u003ccode\u003edict\u003c/code\u003e, and \u003ccode\u003estr\u003c/code\u003e, enabling go-to-definition directly from hint overlays.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Messages\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting \u0026amp; Coverage\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Public symbol filtering is available via \u003ccode\u003epyrefly report --public-only\u003c/code\u003e, using cross-module tracing to report only public symbols.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- TypedDict subset checks are now cached on the Solver, reducing CPU time by ~5.3x and wall time by ~6.7x on pydantic (from 9.5s to 1.4s).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration \u0026amp; Initialization\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- \u003ccode\u003epyrefly init\u003c/code\u003e supports \u003ccode\u003e--dry-run\u003c/code\u003e for safe previews without writing files, and \u003ccode\u003e--print-config\u003c/code\u003e for machine-readable TOML output.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e9\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3099\"\u003e#3099\u003c/a\u003e: Fixed an issue where property setters and deleters inflated typable counts in \u003ccode\u003epyrefly report\u003c/code\u003e by incorrectly counting their trivial \u003ccode\u003e-\u0026gt; None\u003c/code\u003e return types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3098\"\u003e#3098\u003c/a\u003e: Fixed an issue where overloads in \u003ccode\u003epyrefly report\u003c/code\u003e were not deduplicated, causing parameters and callable signatures to be counted multiple times and inflate coverage metrics.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3067\"\u003e#3067\u003c/a\u003e: Fixed an issue where the type display path was dropping the unpack marker (\u003ccode\u003e*\u003c/code\u003e) for direct \u003ccode\u003eTypeVarTuple\u003c/code\u003e arguments, causing \u003ccode\u003eShape\u003c/code\u003e to render bare instead of \u003ccode\u003e*Shape\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3040\"\u003e#3040\u003c/a\u003e: Fixed an issue where properties on metaclasses were not taking precedence over properties on the class during class-level attribute access, causing false \u003ccode\u003ebad-assignment\u003c/code\u003e and \u003ccode\u003ebad-return\u003c/code\u003e errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3150\"\u003e#3150\u003c/a\u003e: Fixed an issue where type aliases were inflating type coverage in \u003ccode\u003epyrefly report\u003c/code\u003e by being counted as typable entities.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3041\"\u003e#3041\u003c/a\u003e: Fixed a panic during workspace/symbol requests on re-exported symbols with multi-byte UTF-8 characters, caused by using the canonical module's byte offset against the re-exporting file's buffer.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3109\"\u003e#3109\u003c/a\u003e: Added a new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint that warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type, making the conversion redundant.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3187\"\u003e#3187\u003c/a\u003e: Fixed a panic in \u003ccode\u003epyrefly report\u003c/code\u003e when \u003ccode\u003e@no_type_check\u003c/code\u003e decorator was used, caused by a missing key lookup for skipped parameter annotations.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3090\"\u003e#3090\u003c/a\u003e: Improved the unused-coroutine error message when an \u003ccode\u003eawait\u003c/code\u003e expression already has \u003ccode\u003eawait\u003c/code\u003e but produces a coroutine due to an incorrect return type annotation on the function definition.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --upgrade pyrefly==0.63.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eHow to safely upgrade your codebase\u003c/h3\u003e\n\u003cp\u003eUpgrading the version of Pyrefly you're using or a third-party library you depend on can reveal new type errors in your code. Fixing them all at once is often unrealistic. We've written scripts to help you temporarily silence them. After upgrading, follow these steps:\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/facebook/pyrefly/commit/74a09114d9520fd67ea7dfef454a0d1f95ac843c\"\u003e\u003ccode\u003e74a0911\u003c/code\u003e\u003c/a\u003e Update pyrefly version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/0bc7f81da03b83978bbd6c13fa85b5afca7b8913\"\u003e\u003ccode\u003e0bc7f81\u003c/code\u003e\u003c/a\u003e Add factory-boy type stubs for testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/46e2c6a26d2f18857eb05303bbd38b78399e4625\"\u003e\u003ccode\u003e46e2c6a\u003c/code\u003e\u003c/a\u003e Add /port-model skill for tensor shape model porting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/6db5a7653258620b8c87d00d0e46428759186e33\"\u003e\u003ccode\u003e6db5a76\u003c/code\u003e\u003c/a\u003e Add TSP integration tests for notebook cell URIs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f137c67fe1128cc55c1da43458f479a2b220b21d\"\u003e\u003ccode\u003ef137c67\u003c/code\u003e\u003c/a\u003e fix license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/107d2814ff44c1560e076d0c55b827f4db913cba\"\u003e\u003ccode\u003e107d281\u003c/code\u003e\u003c/a\u003e Bump capnp 0.25.2 -\u0026gt; 0.25.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/0e47e9a79e22a526712d43a7579a658189e79ef4\"\u003e\u003ccode\u003e0e47e9a\u003c/code\u003e\u003c/a\u003e Bump pkg-config 0.3.32 -\u0026gt; 0.3.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/14dfe00dd37ad9b76f33c707e5f84b3fe15ee79c\"\u003e\u003ccode\u003e14dfe00\u003c/code\u003e\u003c/a\u003e Bump rand 0.10.0 -\u0026gt; 0.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fefc52cdaf93e09fd7cbe66151674cfda8c696d6\"\u003e\u003ccode\u003efefc52c\u003c/code\u003e\u003c/a\u003e Add decompose_hint helper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/01eeae6511041cc2fa71069f3cb15b4752949330\"\u003e\u003ccode\u003e01eeae6\u003c/code\u003e\u003c/a\u003e Remove distinction between SubsetWithSnapshotResult::InstantiationErrors and ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.62.0...0.63.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.11 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.12\"\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/bos/jj-review/pull/30","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bos%2Fjj-review/issues/30","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/30/packages"},{"uuid":"4381423526","node_id":"PR_kwDOP_HjxM7YQddr","number":1004,"state":"open","title":"Bump pyrefly from 0.62.0 to 0.63.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-05T04:02:25.000Z","updated_at":"2026-05-05T04:08:52.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pyrefly","old_version":"0.62.0","new_version":"0.63.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.62.0 to 0.63.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.63.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: April 27, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.63.0 bundles \u003cstrong\u003e129 commits\u003c/strong\u003e from \u003cstrong\u003e26 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Enum member types are preserved even when the metaclass conflicts with \u003ccode\u003eEnumMeta\u003c/code\u003e, reducing noise in projects using custom metaclasses with enums. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Constrained \u003ccode\u003eTypeVar\u003c/code\u003es no longer get pinned to a specific constraint when matched against \u003ccode\u003eAny\u003c/code\u003e, preventing false positives. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Self/cls annotations on all methods and classmethods are validated to ensure they reference the defining class or a superclass, catching more annotation errors.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The LSP now reports \u003ccode\u003eunused-ignore\u003c/code\u003e diagnostics when configured to do so, helping you clean up stale suppression comments. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Completions for attribute override definitions are available in class bodies, surfacing base-class members filtered by fuzzy match. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The LSP server no longer crashes on Jupyter notebook cell URIs (\u003ccode\u003evscode-notebook-cell:\u003c/code\u003e), with full support for resolving notebook cell paths and position offsets. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Workspace symbol search uses the correct location for re-exported symbols, preventing panics on multi-byte UTF-8 characters. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Inlay hints are clickable for built-in types like \u003ccode\u003etuple\u003c/code\u003e, \u003ccode\u003edict\u003c/code\u003e, and \u003ccode\u003estr\u003c/code\u003e, enabling go-to-definition directly from hint overlays.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Messages\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting \u0026amp; Coverage\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Public symbol filtering is available via \u003ccode\u003epyrefly report --public-only\u003c/code\u003e, using cross-module tracing to report only public symbols.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- TypedDict subset checks are now cached on the Solver, reducing CPU time by ~5.3x and wall time by ~6.7x on pydantic (from 9.5s to 1.4s).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration \u0026amp; Initialization\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- \u003ccode\u003epyrefly init\u003c/code\u003e supports \u003ccode\u003e--dry-run\u003c/code\u003e for safe previews without writing files, and \u003ccode\u003e--print-config\u003c/code\u003e for machine-readable TOML output.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e9\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3099\"\u003e#3099\u003c/a\u003e: Fixed an issue where property setters and deleters inflated typable counts in \u003ccode\u003epyrefly report\u003c/code\u003e by incorrectly counting their trivial \u003ccode\u003e-\u0026gt; None\u003c/code\u003e return types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3098\"\u003e#3098\u003c/a\u003e: Fixed an issue where overloads in \u003ccode\u003epyrefly report\u003c/code\u003e were not deduplicated, causing parameters and callable signatures to be counted multiple times and inflate coverage metrics.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3067\"\u003e#3067\u003c/a\u003e: Fixed an issue where the type display path was dropping the unpack marker (\u003ccode\u003e*\u003c/code\u003e) for direct \u003ccode\u003eTypeVarTuple\u003c/code\u003e arguments, causing \u003ccode\u003eShape\u003c/code\u003e to render bare instead of \u003ccode\u003e*Shape\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3040\"\u003e#3040\u003c/a\u003e: Fixed an issue where properties on metaclasses were not taking precedence over properties on the class during class-level attribute access, causing false \u003ccode\u003ebad-assignment\u003c/code\u003e and \u003ccode\u003ebad-return\u003c/code\u003e errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3150\"\u003e#3150\u003c/a\u003e: Fixed an issue where type aliases were inflating type coverage in \u003ccode\u003epyrefly report\u003c/code\u003e by being counted as typable entities.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3041\"\u003e#3041\u003c/a\u003e: Fixed a panic during workspace/symbol requests on re-exported symbols with multi-byte UTF-8 characters, caused by using the canonical module's byte offset against the re-exporting file's buffer.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3109\"\u003e#3109\u003c/a\u003e: Added a new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint that warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type, making the conversion redundant.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3187\"\u003e#3187\u003c/a\u003e: Fixed a panic in \u003ccode\u003epyrefly report\u003c/code\u003e when \u003ccode\u003e@no_type_check\u003c/code\u003e decorator was used, caused by a missing key lookup for skipped parameter annotations.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3090\"\u003e#3090\u003c/a\u003e: Improved the unused-coroutine error message when an \u003ccode\u003eawait\u003c/code\u003e expression already has \u003ccode\u003eawait\u003c/code\u003e but produces a coroutine due to an incorrect return type annotation on the function definition.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --upgrade pyrefly==0.63.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eHow to safely upgrade your codebase\u003c/h3\u003e\n\u003cp\u003eUpgrading the version of Pyrefly you're using or a third-party library you depend on can reveal new type errors in your code. Fixing them all at once is often unrealistic. We've written scripts to help you temporarily silence them. After upgrading, follow these steps:\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/facebook/pyrefly/commit/74a09114d9520fd67ea7dfef454a0d1f95ac843c\"\u003e\u003ccode\u003e74a0911\u003c/code\u003e\u003c/a\u003e Update pyrefly version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/0bc7f81da03b83978bbd6c13fa85b5afca7b8913\"\u003e\u003ccode\u003e0bc7f81\u003c/code\u003e\u003c/a\u003e Add factory-boy type stubs for testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/46e2c6a26d2f18857eb05303bbd38b78399e4625\"\u003e\u003ccode\u003e46e2c6a\u003c/code\u003e\u003c/a\u003e Add /port-model skill for tensor shape model porting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/6db5a7653258620b8c87d00d0e46428759186e33\"\u003e\u003ccode\u003e6db5a76\u003c/code\u003e\u003c/a\u003e Add TSP integration tests for notebook cell URIs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f137c67fe1128cc55c1da43458f479a2b220b21d\"\u003e\u003ccode\u003ef137c67\u003c/code\u003e\u003c/a\u003e fix license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/107d2814ff44c1560e076d0c55b827f4db913cba\"\u003e\u003ccode\u003e107d281\u003c/code\u003e\u003c/a\u003e Bump capnp 0.25.2 -\u0026gt; 0.25.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/0e47e9a79e22a526712d43a7579a658189e79ef4\"\u003e\u003ccode\u003e0e47e9a\u003c/code\u003e\u003c/a\u003e Bump pkg-config 0.3.32 -\u0026gt; 0.3.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/14dfe00dd37ad9b76f33c707e5f84b3fe15ee79c\"\u003e\u003ccode\u003e14dfe00\u003c/code\u003e\u003c/a\u003e Bump rand 0.10.0 -\u0026gt; 0.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fefc52cdaf93e09fd7cbe66151674cfda8c696d6\"\u003e\u003ccode\u003efefc52c\u003c/code\u003e\u003c/a\u003e Add decompose_hint helper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/01eeae6511041cc2fa71069f3cb15b4752949330\"\u003e\u003ccode\u003e01eeae6\u003c/code\u003e\u003c/a\u003e Remove distinction between SubsetWithSnapshotResult::InstantiationErrors and ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.62.0...0.63.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.62.0\u0026new-version=0.63.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)\n\n\n\u003c/details\u003e","html_url":"https://github.com/wemake-services/django-modern-rest/pull/1004","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wemake-services%2Fdjango-modern-rest/issues/1004","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1004/packages"},{"uuid":"4367766888","node_id":"PR_kwDORbN64c7Xli21","number":29,"state":"open","title":"chore(deps-dev): Update pyrefly requirement from \u003c0.55,\u003e=0.54.0 to \u003e=0.54.0,\u003c0.64 in /Wrapping/Python/MCPServer","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-02T03:33:23.000Z","updated_at":"2026-05-02T03:34:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): Update","packages":[{"name":"pyrefly","old_version":"\u003c0.55,\u003e=0.54.0","new_version":"\u003e=0.54.0,\u003c0.64","repository_url":"https://github.com/facebook/pyrefly"}],"path":"/Wrapping/Python/MCPServer","ecosystem":"pip"},"body":"Updates the requirements on [pyrefly](https://github.com/facebook/pyrefly) 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/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.63.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.0...0.63.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.63.0...0.63.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/facebook/pyrefly/commit/e765bc651ba4017f8e83872c62e497054edd922d\"\u003e\u003ccode\u003ee765bc6\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/599bee32312972878756d0f54b36c161bad9598f\"\u003e\u003ccode\u003e599bee3\u003c/code\u003e\u003c/a\u003e better inlay hints docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a4ff846acb0ce215b7a15c0253f150b0a506b099\"\u003e\u003ccode\u003ea4ff846\u003c/code\u003e\u003c/a\u003e Add module uri to module tsp types (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/625877be165908162f4b875fba99daa61cb3e9cf\"\u003e\u003ccode\u003e625877b\u003c/code\u003e\u003c/a\u003e Implement multi-connection architecture (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3218\"\u003e#3218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/252c52a3f8d0cbe902eb58aee929028f9375cff6\"\u003e\u003ccode\u003e252c52a\u003c/code\u003e\u003c/a\u003e move process_event into own block\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/18bb101c9061de6f42a698bd827f6e9248de6bed\"\u003e\u003ccode\u003e18bb101\u003c/code\u003e\u003c/a\u003e factor out snapshot_changed_notification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/447f5f97e8badeff4a55e329d83fe4e67dc6ca8b\"\u003e\u003ccode\u003e447f5f9\u003c/code\u003e\u003c/a\u003e add set_experimental to server\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/84bdff6a151aec92969eea662a52cb24c1641a5b\"\u003e\u003ccode\u003e84bdff6\u003c/code\u003e\u003c/a\u003e Consolidate response helpers and extract parse_tsp_request\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/66b487bf83de7b00b0f615966c70b7ec290c4a2e\"\u003e\u003ccode\u003e66b487b\u003c/code\u003e\u003c/a\u003e Rename TspServer to TspConnection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/43ec5ac1260b56cea8c9be45548751fb949c34d6\"\u003e\u003ccode\u003e43ec5ac\u003c/code\u003e\u003c/a\u003e Add IPC transport for TSP connections (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3217\"\u003e#3217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.54.0...0.63.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/failed33/paraview-mcp/pull/29","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/failed33%2Fparaview-mcp/issues/29","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/29/packages"}],"issue_packages":[{"old_version":"1.1.0","new_version":"1.1.1","update_type":"patch","path":null,"pr_created_at":"2026-06-19T17:05:03.000Z","version_change":"1.1.0 → 1.1.1","issue":{"uuid":"4702388243","node_id":"PR_kwDORA8Bs87odWWy","number":199,"state":"closed","title":"chore(deps-dev): bump pyrefly from 1.1.0 to 1.1.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-19T17:05:15.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-19T17:05:03.000Z","updated_at":"2026-06-19T17:06:12.000Z","time_to_close":12,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"pyrefly","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 1.1.0 to 1.1.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.1.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003eRelease date: June 18, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v1.1.1 is a patch release with a single bug fix.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3867\"\u003e#3867\u003c/a\u003e:\u003c/strong\u003e Fixed a regression introduced in 1.1.0 where \u003ccode\u003eisinstance()\u003c/code\u003e narrowing of a union variable silently stopped working when an earlier sibling branch in the same \u003ccode\u003eif\u003c/code\u003e/\u003ccode\u003eelif\u003c/code\u003e/\u003ccode\u003eelse\u003c/code\u003e chain narrowed a different variable with \u003ccode\u003eisinstance()\u003c/code\u003e and returned. The later narrowing left the union untouched, producing false \u003ccode\u003emissing-attribute\u003c/code\u003e errors on code that checked correctly in 1.0.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --upgrade pyrefly==1.1.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eHow to safely upgrade your codebase\u003c/h3\u003e\n\u003cp\u003eUpgrading the version of Pyrefly you're using or a third-party library you depend on can reveal new type errors in your code. Fixing them all at once is often unrealistic. We've written scripts to help you temporarily silence them. After upgrading, follow these steps:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ccode\u003epyrefly check --suppress-errors\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRun your code formatter of choice\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epyrefly check --remove-unused-ignores\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRepeat until you achieve a clean formatting run and a clean type check.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThis will add \u003ccode\u003e# pyrefly: ignore\u003c/code\u003e comments to your code, enabling you to silence errors and return to fix them later. This can make the process of upgrading a large codebase much more manageable.\u003c/p\u003e\n\u003cp\u003eRead more about error suppressions in the \u003ca href=\"https://pyrefly.org/en/docs/error-suppressions/\"\u003ePyrefly documentation\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b87de05834c401898c79fd9686b806c051dd3667\"\u003e\u003ccode\u003eb87de05\u003c/code\u003e\u003c/a\u003e cut 1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a297847fa0cee3a34b1dd2a055a70c1ebf3c0237\"\u003e\u003ccode\u003ea297847\u003c/code\u003e\u003c/a\u003e release notes for v1.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/4be867378805aa33bfe87d12e589561964a61b4f\"\u003e\u003ccode\u003e4be8673\u003c/code\u003e\u003c/a\u003e Fix isinstance narrowing silently breaking after a sibling branch narrows ano...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facebook/pyrefly/compare/1.1.0...1.1.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=pyrefly\u0026package-manager=uv\u0026previous-version=1.1.0\u0026new-version=1.1.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/maksimzayats/diwire/pull/199","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/maksimzayats%2Fdiwire/issues/199","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/199/packages"}},{"old_version":"0.44.0","new_version":"1.0.0","update_type":"major","path":null,"pr_created_at":"2026-06-15T18:51:12.000Z","version_change":"0.44.0 → 1.0.0","issue":{"uuid":"4667961567","node_id":"PR_kwDOH8gfRs7mrymG","number":217,"state":"closed","title":"Bump the all-dependencies group with 22 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-16T00:55:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-15T18:51:12.000Z","updated_at":"2026-06-16T00:55:42.000Z","time_to_close":21868,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-dependencies","update_count":22,"packages":[{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"docutils","old_version":"0.22.3","new_version":"0.23","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"imagesize","old_version":"1.4.1","new_version":"2.0.0","repository_url":"https://github.com/shibukawa/imagesize_py"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"roman-numerals","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/AA-Turner/roman-numerals"},{"name":"packaging","old_version":"25.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"ruff","old_version":"0.14.9","new_version":"0.15.17","repository_url":"https://github.com/astral-sh/ruff"},{"name":"build","old_version":"1.3.0","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"pypi-attestations","old_version":"0.0.28","new_version":"0.0.29","repository_url":"https://github.com/pypi/pypi-attestations"},{"name":"pytest","old_version":"9.0.1","new_version":"9.1.0","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"cython","old_version":"3.2.2","new_version":"3.2.5","repository_url":"https://github.com/cython/cython"},{"name":"setuptools","old_version":"80.9.0","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"mypy","old_version":"1.19.1","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.44.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"pyright","old_version":"1.1.407","new_version":"1.1.410","repository_url":"https://github.com/RobertCraigie/pyright-python"},{"name":"ty","old_version":"0.0.1a30","new_version":"0.0.49","repository_url":"https://github.com/astral-sh/ty"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20251115","new_version":"0.22.3.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-dependencies group with 22 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.22.3` | `0.23` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.1` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [imagesize](https://github.com/shibukawa/imagesize_py) | `1.4.1` | `2.0.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [roman-numerals](https://github.com/AA-Turner/roman-numerals) | `3.1.0` | `4.1.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.15.17` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.5.0` |\n| [pypi-attestations](https://github.com/pypi/pypi-attestations) | `0.0.28` | `0.0.29` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.1` | `9.1.0` |\n| [cython](https://github.com/cython/cython) | `3.2.2` | `3.2.5` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.9.0` | `82.0.1` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.1.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.44.0` | `1.0.0` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.407` | `1.1.410` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.1a30` | `0.0.49` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260504` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20251115` | `0.22.3.20260518` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250913` | `2.33.0.20260518` |\n\nUpdates `pygments` from 2.19.2 to 2.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.20.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.20.0\u003c/h2\u003e\n\u003cp\u003e(released March 29th, 2026)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRell (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003earchetype: Fix catastrophic backtracking in GUID and ID patterns (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3064\"\u003e#3064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eASN.1: Recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3014\"\u003e#3014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC++: Add C++26 keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e), add integer literal suffixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2966\"\u003e#2966\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eComponentPascal: Fix \u003ccode\u003eanalyse_text\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3028\"\u003e#3028\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3032\"\u003e#3032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCoq renamed to Rocq (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2883\"\u003e#2883\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2908\"\u003e#2908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCython: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2932\"\u003e#2932\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDebian control: Improve architecture parsing (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3052\"\u003e#3052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDevicetree: Add support for overlay/fragments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3021\"\u003e#3021\u003c/a\u003e), add bytestring support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3022\"\u003e#3022\u003c/a\u003e), fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3057\"\u003e#3057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFennel: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHaskell: Handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1795\"\u003e#1795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJava: Add module keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2955\"\u003e#2955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLean4: Add operators \u003ccode\u003e]'\u003c/code\u003e, \u003ccode\u003e]?\u003c/code\u003e, \u003ccode\u003e]!\u003c/code\u003e  (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2946\"\u003e#2946\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLESS: Support single-line comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLilyPond: Update to 2.25.29 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2974\"\u003e#2974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLLVM: Support C-style comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3023\"\u003e#3023\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2978\"\u003e#2978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua(u): Fix catastrophic backtracking (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3047\"\u003e#3047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update to 1.25.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2893\"\u003e#2893\u003c/a\u003e), 1.25.11 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2988\"\u003e#2988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2957\"\u003e#2957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emeson: Add additional operators (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL: Update keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2970\"\u003e#2970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eorg-Mode: Support both schedule and deadline (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2899\"\u003e#2899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePHP: Add \u003ccode\u003e__PROPERTY__\u003c/code\u003e magic constant (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2924\"\u003e#2924\u003c/a\u003e), add reserved keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePostgreSQL: Add more keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2985\"\u003e#2985\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eprotobuf: Fix namespace tokenization (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2929\"\u003e#2929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython: Add \u003ccode\u003et\u003c/code\u003e-string support (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2973\"\u003e#2973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3009\"\u003e#3009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3010\"\u003e#3010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTablegen: Fix infinite loop (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2972\"\u003e#2972\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTera Term macro: Add commands introduced in v5.3 through v5.6 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTOML: Support TOML 1.1.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3026\"\u003e#3026\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3027\"\u003e#3027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTurtle: Allow empty comment lines (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2980\"\u003e#2980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eXML: Added \u003ccode\u003e.xbrl\u003c/code\u003e as file ending (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2890\"\u003e#2890\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2891\"\u003e#2891\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop Python 3.8, and add Python 3.14 as a supported version (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2987\"\u003e#2987\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to \u003ccode\u003eautopygmentize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2894\"\u003e#2894\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003eonedark\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2977\"\u003e#2977\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate \u003ccode\u003ertt\u003c/code\u003e style to support more token types (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2895\"\u003e#2895\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCache entry points to improve performance (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003exterm-256\u003c/code\u003e color table (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3043\"\u003e#3043\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003ekwargs\u003c/code\u003e dictionary getting mutated on each call (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3044\"\u003e#3044\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/708197d82827ba2d5ca78bcbb653c7102ce86dcd\"\u003e\u003ccode\u003e708197d\u003c/code\u003e\u003c/a\u003e Fix underline length.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d4538ae8621d766ecc91ff59caf76ab75983abc\"\u003e\u003ccode\u003e1d4538a\u003c/code\u003e\u003c/a\u003e Prepare 2.20 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/2ceaee4e634eebae2d10a47fd05406871f6bac8f\"\u003e\u003ccode\u003e2ceaee4\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/e3a3c54b58c7f80bc4db887e471d4f91c77844ed\"\u003e\u003ccode\u003ee3a3c54\u003c/code\u003e\u003c/a\u003e Fix Haskell lexer: handle escape sequences in character literals (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d7c3453e342dac319f58e4091f4ef183cc49d802\"\u003e\u003ccode\u003ed7c3453\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3071\"\u003e#3071\u003c/a\u003e from pygments/harden-html-formatter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/0f97e7c37d44abfa4ddfddf44a3290fdad586034\"\u003e\u003ccode\u003e0f97e7c\u003c/code\u003e\u003c/a\u003e Harden the HTML formatter against CSS.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/9f981b2ba42b88ca5bdcebf12cd01efd7cd80aec\"\u003e\u003ccode\u003e9f981b2\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/1d889151024e9a53f3702a60558b29b070306e9e\"\u003e\u003ccode\u003e1d88915\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/c3d93adb9827fc054c3c12b47bde31c781a36a93\"\u003e\u003ccode\u003ec3d93ad\u003c/code\u003e\u003c/a\u003e Fix ASN.1 lexer: recognize minus sign and fix range operator (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3060\"\u003e#3060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/4f06bcf8a5ba3f2b5bda24a26ccf041a1a65d91e\"\u003e\u003ccode\u003e4f06bcf\u003c/code\u003e\u003c/a\u003e fix bad behaving backtracking regex in CommonLispLexer\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.2...2.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.22.3 to 0.23\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `snowballstemmer` from 3.0.1 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/snowballstem/snowball/blob/main/NEWS\"\u003esnowballstemmer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eSnowball 3.1.1 (2026-06-03)\u003c/h1\u003e\n\u003ch2\u003eCompiler changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix a segmentation fault after reporting an error for a string command\nnot followed by a string variable name or string literal.  Bug introduced\nin 3.1.0.  Patch from Jerry James (\u003ca href=\"https://redirect.github.com/snowballstem/snowball/issues/287\"\u003e#287\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCompiler command-line options:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEmit an error for \u003ccode\u003e-o -\u003c/code\u003e/\u003ccode\u003e-output -\u003c/code\u003e.  Output to stdout is not supported\nbecause we need to generate multiple files for some target languages.\nWe were interpreting \u003ccode\u003e-\u003c/code\u003e as a base filename to append extensions to, so\nwe'd create \u003ccode\u003e-.c\u003c/code\u003e and \u003ccode\u003e-.h\u003c/code\u003e for C, but creating filenames that start with\n\u003ccode\u003e-\u003c/code\u003e seems unhelpful.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGeneric code generation changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVariable localisation was failing to check the expression on the RHS of an\ninteger test for uses of a variable, so could incorrectly localise an\ninteger variable whose value should have persisted between calls to a\nfunction.  This bug won't realistically manifest in real world Snowball\ncode.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOptimisations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eInline some routines which are only used once.  This is done for routines\nconsisting of a single non-compound command (or cases such as \u003ccode\u003enot \u0026lt;boolean\u0026gt;\u003c/code\u003e and \u003ccode\u003egoto \u0026lt;grouping\u0026gt;\u003c/code\u003e which we internally synthesise a\nnon-compound command for).  Localisation of variables happens after\ninlining, so variables can now be localised in more cases.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003etest next\u003c/code\u003e and \u003ccode\u003enot next\u003c/code\u003e are both now simplified to a comparison between\n\u003ccode\u003ecursor\u003c/code\u003e and \u003ccode\u003elimit\u003c/code\u003e (like \u003ccode\u003enot atlimit\u003c/code\u003e and \u003ccode\u003eatlimit\u003c/code\u003e).  We already\nnormalise \u003ccode\u003ehop 1\u003c/code\u003e to \u003ccode\u003enext\u003c/code\u003e, so \u003ccode\u003etest hop 1\u003c/code\u003e and \u003ccode\u003enot hop 1\u003c/code\u003e are also\nsimplified in this way.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify \u003ccode\u003enot\u003c/code\u003e applied to an integer test by removing the \u003ccode\u003enot\u003c/code\u003e and\nflipping the sense of the test (e.g. \u003ccode\u003enot $(x \u0026gt; y)\u003c/code\u003e becomes \u003ccode\u003e$(x \u0026lt;= y)\u003c/code\u003e)\nwhich results in simpler generated code.  More usefully in real world code,\nthis also results in simpler generated code for \u003ccode\u003enot atlimit\u003c/code\u003e (since\n\u003ccode\u003eatlimit\u003c/code\u003e is converted \u003ccode\u003e$(cursor \u0026gt;= limit)\u003c/code\u003e or \u003ccode\u003e$(cursor \u0026lt;= limit)\u003c/code\u003e\n(depending on the current direction).\u003c/p\u003e\n\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/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543\"\u003e\u003ccode\u003ecd195b5\u003c/code\u003e\u003c/a\u003e Update for 3.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58\"\u003e\u003ccode\u003e80d885c\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258\"\u003e\u003ccode\u003e5346c74\u003c/code\u003e\u003c/a\u003e C++: Compile runtime as C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7\"\u003e\u003ccode\u003e537f970\u003c/code\u003e\u003c/a\u003e python: Add classifier for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2\"\u003e\u003ccode\u003e3aeb013\u003c/code\u003e\u003c/a\u003e python: Skip Natural Language :: Sesotho classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63\"\u003e\u003ccode\u003e91fa20b\u003c/code\u003e\u003c/a\u003e NEWS: Update draft entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79\"\u003e\u003ccode\u003ea04abeb\u003c/code\u003e\u003c/a\u003e Don't use extern \u0026quot;C\u0026quot; for functions which can throw\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c\"\u003e\u003ccode\u003e49bb623\u003c/code\u003e\u003c/a\u003e C++: Hook up properly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05\"\u003e\u003ccode\u003e7ab50ed\u003c/code\u003e\u003c/a\u003e CI: Fix coverage job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95\"\u003e\u003ccode\u003e5f0a33c\u003c/code\u003e\u003c/a\u003e NEWS: Add draft entry\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/snowballstem/snowball/compare/v3.0.1...v3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.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/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\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/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imagesize` from 1.4.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5ab28d47b96d6a0738ec036034919a739b4d64da\"\u003e\u003ccode\u003e5ab28d4\u003c/code\u003e\u003c/a\u003e bump module version to 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/63d6afb8e24b9f9d599f7a15fa50ebc7964ad7c7\"\u003e\u003ccode\u003e63d6afb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/82\"\u003e#82\u003c/a\u003e from shibukawa/codex/update-readme-and-setup-instructi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/294606629eaf3950290de90a4b1ab9aaed7c89c3\"\u003e\u003ccode\u003e2946066\u003c/code\u003e\u003c/a\u003e docs: clarify EXIF orientation formats in v2.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/53eff2e3ab713b81883003bbd4eca586cc592431\"\u003e\u003ccode\u003e53eff2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/81\"\u003e#81\u003c/a\u003e from shibukawa/codex/refactor-code-to-reduce-duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/ac14f2af0208f9d57780d86ff619a32f80b90109\"\u003e\u003ccode\u003eac14f2a\u003c/code\u003e\u003c/a\u003e Refactor duplicated JPEG segment parsing logic\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/48ab954c707642d06081c8b5eae53b61b410715a\"\u003e\u003ccode\u003e48ab954\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/80\"\u003e#80\u003c/a\u003e from shibukawa/codex/add-avif-exif-rotation-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/5cada1084cc21621541216810ecaf4514ca0e60b\"\u003e\u003ccode\u003e5cada10\u003c/code\u003e\u003c/a\u003e Add AVIF EXIF rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/232c6d5204e38d5a288114c098304cc2f8358f69\"\u003e\u003ccode\u003e232c6d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/79\"\u003e#79\u003c/a\u003e from shibukawa/codex/add-heic/heif-support-and-rotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/324c970eb6c8d5326a6e3e16216ed2d498358219\"\u003e\u003ccode\u003e324c970\u003c/code\u003e\u003c/a\u003e Add HEIC/HEIF size and rotation support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shibukawa/imagesize_py/commit/7b7bb5f720401332eba12e93ad2e31d1bbc01cd4\"\u003e\u003ccode\u003e7b7bb5f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/shibukawa/imagesize_py/issues/78\"\u003e#78\u003c/a\u003e from shibukawa/codex/add-pypi-link-and-python-version-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/shibukawa/imagesize_py/compare/1.4.1...2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.5...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `roman-numerals` from 3.1.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/AA-Turner/roman-numerals/releases\"\u003eroman-numerals's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.1.0\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eroman-numerals 4.0.0\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/AA-Turner/roman-numerals/blob/master/CHANGES.rst\"\u003eroman-numerals's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease 4.1.0 (released 17 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRestore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003eAdd some debug assertions for unsafe blocks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eRelease 4.0.0 (released 16 Dec 2025)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRename Python package to \u003ccode\u003eroman-numerals\u003c/code\u003e on PyPI.\u003c/li\u003e\n\u003cli\u003ePublish \u003ccode\u003eroman-numerals-py\u003c/code\u003e as a meta-package that depends\non \u003ccode\u003eroman-numerals\u003c/code\u003e and installs no modules.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.15.\u003c/li\u003e\n\u003cli\u003eIncrease the minimum supported Rust version (MSRV) to 1.81.0.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::error::Error\u003c/code\u003e trait for all error types.\u003c/li\u003e\n\u003cli\u003eImplement the \u003ccode\u003ecore::fmt\u003c/code\u003e traits in \u003ccode\u003eno-std\u003c/code\u003e mode.\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003eFrom\u0026lt;RomanNumeral\u0026gt;\u003c/code\u003e for most integer types.\u003c/li\u003e\n\u003cli\u003ePublish the \u003ccode\u003eroman-numerals-rs\u003c/code\u003e crate using \u003ccode\u003eTrusted Publishing \u0026lt;https://crates.io/docs/trusted-publishing\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/53c9c4eac63b91728fba3c26329163ee57654d21\"\u003e\u003ccode\u003e53c9c4e\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a3793b83fab7064107ac56a482a6fa93bc9c5048\"\u003e\u003ccode\u003ea3793b8\u003c/code\u003e\u003c/a\u003e Add more SAFETY notes and debug assertions to unsafe blocks (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/46d346e2d08b634856c79783e404616b65626ba7\"\u003e\u003ccode\u003e46d346e\u003c/code\u003e\u003c/a\u003e Adjust annotations in light of PEP 649\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/b8fae405d948415f7397ae4f64569c53cb623105\"\u003e\u003ccode\u003eb8fae40\u003c/code\u003e\u003c/a\u003e Adjust an example in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/a88464130711ad5e8d56e6ff747d17068ae17534\"\u003e\u003ccode\u003ea884641\u003c/code\u003e\u003c/a\u003e Restore LICENCE.rst in the roman-numerals-py meta-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c3e1b6b4e6e02e5e19c26dc6f72bbb7b1060cca5\"\u003e\u003ccode\u003ec3e1b6b\u003c/code\u003e\u003c/a\u003e Release v4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/c335cb63ed97e684a4e9453639bfc7e9f487bb41\"\u003e\u003ccode\u003ec335cb6\u003c/code\u003e\u003c/a\u003e Add publishing step for the \u003ccode\u003eroman-numerals-py\u003c/code\u003e meta-package (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/105\"\u003e#105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/649f6e62e7bd24123d7dd489609ae47168aaeb1b\"\u003e\u003ccode\u003e649f6e6\u003c/code\u003e\u003c/a\u003e Add Trusted Publishing workflow for crates.io (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/ffa4dd1b33eae62f1bd1d44549e10a528b8f1f58\"\u003e\u003ccode\u003effa4dd1\u003c/code\u003e\u003c/a\u003e rust: Refactor tests (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AA-Turner/roman-numerals/commit/26b41561c1d9813104548777b5ed9622d7125b38\"\u003e\u003ccode\u003e26b4156\u003c/code\u003e\u003c/a\u003e Simplify ASCII detection closures (\u003ca href=\"https://redirect.github.com/AA-Turner/roman-numerals/issues/102\"\u003e#102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/AA-Turner/roman-numerals/compare/v3.1.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `packaging` from 25.0 to 26.2\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.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten by \u003ca href=\"https://github.com/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) by \u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1168\"\u003epypa/packaging#1168\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1170\"\u003epypa/packaging#1170\u003c/a\u003e, and \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1171\"\u003epypa/packaging#1171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: re-export ExceptionGroup for now by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1164\"\u003epypa/packaging#1164\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: add errors section and fix missing details by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1159\"\u003epypa/packaging#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(dev): document property-based test suite by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1167\"\u003epypa/packaging#1167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in DirectUrl documentation by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1169\"\u003epypa/packaging#1169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs(specifiers): add is_unsatisfiable() usage example by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1166\"\u003epypa/packaging#1166\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1158\"\u003epypa/packaging#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1174\"\u003epypa/packaging#1174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse native uv integration in rtd by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1175\"\u003epypa/packaging#1175\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/ryanking13\"\u003e\u003ccode\u003e@​ryanking13\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1160\"\u003epypa/packaging#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eachimei\"\u003e\u003ccode\u003e@​eachimei\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1163\"\u003epypa/packaging#1163\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/packaging/compare/26.1...26.2\"\u003ehttps://github.com/pypa/packaging/compare/26.1...26.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e26.1\u003c/h2\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cdel\u003ePEP 783: add handling for Emscripten wheel tags by \u003ca href=\"https://github.com/hoodmane\"\u003e\u003ccode\u003e@​hoodmane\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/804\"\u003epypa/packaging#804\u003c/a\u003e\u003c/del\u003e (old name used in implementation, will be fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1099\"\u003epypa/packaging#1099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePEP 723: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package by \u003ca href=\"https://github.com/sirosen\"\u003e\u003ccode\u003e@​sirosen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1065\"\u003epypa/packaging#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/944\"\u003epypa/packaging#944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1071\"\u003epypa/packaging#1071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1119\"\u003epypa/packaging#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags by \u003ca href=\"https://github.com/sbidoul\"\u003e\u003ccode\u003e@​sbidoul\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1110\"\u003epypa/packaging#1110\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1068\"\u003epypa/packaging#1068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1146\"\u003epypa/packaging#1146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1078\"\u003epypa/packaging#1078\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1150\"\u003epypa/packaging#1150\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec by \u003ca href=\"https://github.com/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/packaging/pull/1140\"\u003epypa/packaging#1140\u003c/a\u003e\u003c/li\u003e\n\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.2 - 2026-04-24\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nFixes:\n\u003cul\u003e\n\u003cli\u003eFix incorrect sysconfig var name for pyemscripten in (:pull:\u003ccode\u003e1160\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eVersion\u003c/code\u003e, \u003ccode\u003eSpecifier\u003c/code\u003e, \u003ccode\u003eSpecifierSet\u003c/code\u003e, \u003ccode\u003eTag\u003c/code\u003e, \u003ccode\u003eMarker\u003c/code\u003e, and \u003ccode\u003eRequirement\u003c/code\u003e pickle-safe\u003cbr /\u003e\nand backward-compatible with pickles created in 25.0-26.1 (including references to the removed\u003cbr /\u003e\n\u003ccode\u003epackaging._structures\u003c/code\u003e module) (:pull:\u003ccode\u003e1163\u003c/code\u003e, :pull:\u003ccode\u003e1168\u003c/code\u003e, :pull:\u003ccode\u003e1170\u003c/code\u003e, :pull:\u003ccode\u003e1171\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRe-export \u003ccode\u003eExceptionGroup\u003c/code\u003e in metadata for now in (:pull:\u003ccode\u003e1164\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocumentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd errors section and fix missing details in (:pull:\u003ccode\u003e1159\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument our property-based test suite in (:pull:\u003ccode\u003e1167\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix a \u003ccode\u003eDirectUrl\u003c/code\u003e typo in (:pull:\u003ccode\u003e1169\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd example of \u003ccode\u003eis_unsatisfiable\u003c/code\u003e in (:pull:\u003ccode\u003e1166\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eInternal:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnable the auditor persona on zizmor in (:pull:\u003ccode\u003e1158\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eTest new pickle guarantees in (:pull:\u003ccode\u003e1174\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eUse new native ReadTheDocs uv integration in (:pull:\u003ccode\u003e1175\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e26.1 - 2026-04-14\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eFeatures:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePEP 783: add handling for Emscripten wheel tags in (:pull:\u003ccode\u003e804\u003c/code\u003e) (old name used in implementation, fixed in next release)\u003c/li\u003e\n\u003cli\u003ePEP 803: add handling for the \u003ccode\u003eabi3.abi3t\u003c/code\u003e free-threading tag in (:pull:\u003ccode\u003e1099\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePEP 735: add \u003ccode\u003epackaging.dependency_groups\u003c/code\u003e module, based on the \u003ccode\u003edependency-groups\u003c/code\u003e package in (:pull:\u003ccode\u003e1065\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.direct_url\u003c/code\u003e module in (:pull:\u003ccode\u003e944\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd the \u003ccode\u003epackaging.errors\u003c/code\u003e module in (:pull:\u003ccode\u003e1071\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eSpecifierSet.is_unsatisfiable\u003c/code\u003e using ranges (new internals that will be expanded in future versions) in (:pull:\u003ccode\u003e1119\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecreate_compatible_tags_selector\u003c/code\u003e to select compatible tags in (:pull:\u003ccode\u003e1110\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ekey\u003c/code\u003e argument to \u003ccode\u003eSpecifierSet.filter()\u003c/code\u003e in (:pull:\u003ccode\u003e1068\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003e\u0026amp;\u003c/code\u003e and \u003ccode\u003e|\u003c/code\u003e for \u003ccode\u003eMarker\u003c/code\u003e's in (:pull:\u003ccode\u003e1146\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize \u003ccode\u003eVersion.__replace__\u003c/code\u003e and add \u003ccode\u003eVersion.from_parts\u003c/code\u003e in (:pull:\u003ccode\u003e1078\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd an option to validate compressed tag set sort order in \u003ccode\u003eparse_wheel_filename\u003c/code\u003e in (:pull:\u003ccode\u003e1150\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBehavior adaptations:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNarrow exclusion of pre-releases for \u003ccode\u003e\u0026lt;V.postN\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1140\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow exclusion of post-releases for \u003ccode\u003e\u0026gt;V\u003c/code\u003e to match spec in (:pull:\u003ccode\u003e1141\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003eformat_full_version\u003c/code\u003e to \u003ccode\u003e_format_full_version\u003c/code\u003e to make it visibly private in (:pull:\u003ccode\u003e1125\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict local version to ASCII in (:pull:\u003ccode\u003e1102\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePylock (PEP 751) updates:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/84a87ee42483d7352f9502d78a9553da8859aa7a\"\u003e\u003ccode\u003e84a87ee\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4a616b65bed23c8c6d58e6b0fc1a4434d4ff1f14\"\u003e\u003ccode\u003e4a616b6\u003c/code\u003e\u003c/a\u003e docs: a few more updates to prepare for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1176\"\u003e#1176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/9de6f44f1e82d4595edf3aad1c4f6f98c85935a0\"\u003e\u003ccode\u003e9de6f44\u003c/code\u003e\u003c/a\u003e ci: use native uv integration in rtd (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1175\"\u003e#1175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/bc76e14debd1a2799d1ca8f9d9c9823f35bfa466\"\u003e\u003ccode\u003ebc76e14\u003c/code\u003e\u003c/a\u003e chore: update changelog for 26.2 (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1161\"\u003e#1161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/3f00091c08f0aa830e33ed7db00f16f11c8ac97f\"\u003e\u003ccode\u003e3f00091\u003c/code\u003e\u003c/a\u003e tests: add a pickle check (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1174\"\u003e#1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/48a8a069805291186522de3eff73ea80a8ca96ad\"\u003e\u003ccode\u003e48a8a06\u003c/code\u003e\u003c/a\u003e fix: make Requirements/Markers pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1171\"\u003e#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/823b44ed1f904084a77ae3adf0ef130af6365f84\"\u003e\u003ccode\u003e823b44e\u003c/code\u003e\u003c/a\u003e fix: make Tags pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/4bed32d920ca7211dd65fdf0a1ee06376e9c4733\"\u003e\u003ccode\u003e4bed32d\u003c/code\u003e\u003c/a\u003e fix: make Specifier / SpecifierSet pickle-safe (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/963118e37caae97bc8b72f72956c7fb4ca9857ec\"\u003e\u003ccode\u003e963118e\u003c/code\u003e\u003c/a\u003e fix: re-export ExceptionGroup for now (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/packaging/commit/66e34a80256c96dea11da143682950c84b8133bb\"\u003e\u003ccode\u003e66e34a8\u003c/code\u003e\u003c/a\u003e docs(specifiers): add is_unsatisfiable() usage example (\u003ca href=\"https://redirect.github.com/pypa/packaging/issues/1166\"\u003e#1166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/packaging/compare/25.0...26.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.9 to 0.15.17\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.17\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-11.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in suppression comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25614\"\u003e#25614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eignore\u003c/code\u003e comments within a \u003ccode\u003edisable\u003c/code\u003e/\u003ccode\u003eenable\u003c/code\u003e pair (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25845\"\u003e#25845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrioritize human-readable names in CLI output (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25869\"\u003e#25869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect diagnostic start and parent ranges and trailing comments in \u003ccode\u003eruff:ignore\u003c/code\u003e suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e to safe decorators (\u003ccode\u003eASYNC119\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25775\"\u003e#25775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Also check \u003ccode\u003epytest_asyncio\u003c/code\u003e fixtures (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25375\"\u003e#25375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ban \u003ccode\u003epytest\u003c/code\u003e autouse fixtures (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25477\"\u003e#25477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Add \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e automatically (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23259\"\u003e#23259\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix diagnostic when \u003ccode\u003eruff:enable\u003c/code\u003e or \u003ccode\u003eruff:disable\u003c/code\u003e appears where \u003ccode\u003eruff:ignore\u003c/code\u003e is expected (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25700\"\u003e#25700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Preserve leading empty literals to avoid syntax errors (\u003ccode\u003eUP032\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25491\"\u003e#25491\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-pytest-style\u003c/code\u003e] Clarify diagnostic message for single parameters (\u003ccode\u003ePT007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25592\"\u003e#25592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003enumpy\u003c/code\u003e] Drop autofix for \u003ccode\u003enp.in1d\u003c/code\u003e (\u003ccode\u003eNPY201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25612\"\u003e#25612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Exempt Python version comparisons (\u003ccode\u003ePLR2004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25743\"\u003e#25743\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReserve AST \u003ccode\u003eVec\u003c/code\u003es with correct capacity for common cases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25451\"\u003e#25451\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve whitespace for Quarto cell option comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25641\"\u003e#25641\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rule names in \u003ccode\u003eruff rule\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25640\"\u003e#25640\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix playground diagnostics scrollbars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25642\"\u003e#25642\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/SuryanshSS1011\"\u003e\u003ccode\u003e@​SuryanshSS1011\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/romero-deshaw\"\u003e\u003ccode\u003e@​romero-deshaw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/karlhillx\"\u003e\u003ccode\u003e@​karlhillx\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carljm\"\u003e\u003ccode\u003e@​carljm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.17\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-06-11.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow human-readable names in suppression comments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25614\"\u003e#25614\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eignore\u003c/code\u003e comments within a \u003ccode\u003edisable\u003c/code\u003e/\u003ccode\u003eenable\u003c/code\u003e pair (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25845\"\u003e#25845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrioritize human-readable names in CLI output (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25869\"\u003e#25869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect diagnostic start and parent ranges and trailing comments in \u003ccode\u003eruff:ignore\u003c/code\u003e suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25673\"\u003e#25673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Add \u003ccode\u003etrio.as_safe_channel\u003c/code\u003e to safe decorators (\u003ccode\u003eASYNC119\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25775\"\u003e#25775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Also check \u003ccode\u003epytest_asyncio\u003c/code\u003e fixtures (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25375\"\u003e#25375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ban \u003ccode\u003epytest\u003c/code\u003e autouse fixtures (\u003ccode\u003eRUF076\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25477\"\u003e#25477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Add \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e automatically (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23259\"\u003e#23259\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix diagnostic when \u003ccode\u003eruff:enable\u003c/code\u003e or \u003ccode\u003eruff:disable\u003c/code\u003e appears where \u003ccode\u003eruff:ignore\u003c/code\u003e is expected (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25700\"\u003e#25700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Preserve leading empty literals to avoid syntax errors (\u003ccode\u003eUP032\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25491\"\u003e#25491\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-pytest-style\u003c/code\u003e] Clarify diagnostic message for single parameters (\u003ccode\u003ePT007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25592\"\u003e#25592\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003enumpy\u003c/code\u003e] Drop autofix for \u003ccode\u003enp.in1d\u003c/code\u003e (\u003ccode\u003eNPY201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25612\"\u003e#25612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Exempt Python version comparisons (\u003ccode\u003ePLR2004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25743\"\u003e#25743\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReserve AST \u003ccode\u003eVec\u003c/code\u003es with correct...\n\n_Description has been truncated_","html_url":"https://github.com/sailfishos-mirror/sphinx/pull/217","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sailfishos-mirror%2Fsphinx/issues/217","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/217/packages"}},{"old_version":"0.63.1","new_version":"1.0.0","update_type":"major","path":"the actions group","pr_created_at":"2026-06-03T01:44:14.000Z","version_change":"0.63.1 → 1.0.0","issue":{"uuid":"4576228537","node_id":"PR_kwDOMmoEl87iCJtt","number":1687,"state":"closed","title":"⬆️ Bump pyrefly from 0.63.1 to 1.0.0 in the actions group","user":"dependabot[bot]","labels":["topic: dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-03T08:18:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-03T01:44:14.000Z","updated_at":"2026-06-03T08:18:36.000Z","time_to_close":23652,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"⬆️ Bump","packages":[{"name":"pyrefly","old_version":"0.63.1","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":"the actions group","ecosystem":"pip"},"body":"Bumps the actions group with 1 update: [pyrefly](https://github.com/facebook/pyrefly).\n\nUpdates `pyrefly` from 0.63.1 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.1...1.0.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.63.1\u0026new-version=1.0.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 \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/scipy/scipy-stubs/pull/1687","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipy%2Fscipy-stubs/issues/1687","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1687/packages"}},{"old_version":"0.55.0","new_version":"1.0.0","update_type":"major","path":null,"pr_created_at":"2026-05-27T02:51:51.000Z","version_change":"0.55.0 → 1.0.0","issue":{"uuid":"4529077439","node_id":"PR_kwDORvGpa87fp4zJ","number":41,"state":"open","title":"Chore(deps): Bump the major-versions group across 1 directory with 6 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-27T02:51:51.000Z","updated_at":"2026-05-27T02:51:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"major-versions","update_count":6,"packages":[{"name":"django","old_version":"5.2.12","new_version":"5.2.14","repository_url":"https://github.com/django/django"},{"name":"mypy","old_version":"1.19.1","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.55.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"types-pytz","old_version":"2025.2.0.20251108","new_version":"2026.2.0.20260518","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"80.10.0.20260124","new_version":"82.0.0.20260518","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the major-versions group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `5.2.12` | `5.2.14` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.1.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.55.0` | `1.0.0` |\n| [types-pytz](https://github.com/python/typeshed) | `2025.2.0.20251108` | `2026.2.0.20260518` |\n| [types-setuptools](https://github.com/python/typeshed) | `80.10.0.20260124` | `82.0.0.20260518` |\n\n\nUpdates `django` from 5.2.12 to 5.2.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/024c26b1e77ea5b1b158265167ade47927a64c06\"\u003e\u003ccode\u003e024c26b\u003c/code\u003e\u003c/a\u003e [5.2.x] Bumped version for 5.2.14 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2115d4eaee15107f5cd290d7cfcc5ffe3ad43661\"\u003e\u003ccode\u003e2115d4e\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-6907 -- Prevented caching of requests when Vary header...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/47cf968c125e3fab317e10fe150ec479e745f995\"\u003e\u003ccode\u003e47cf968\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-35192 -- Ensured Vary header is sent when setting sess...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2ec27eda3ba6c14f0856e6e3eb1df07c41fd95e6\"\u003e\u003ccode\u003e2ec27ed\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed CVE-2026-5766 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE in Memory...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ed18840c8cd1be81fdb3955cbfc9459989d6df68\"\u003e\u003ccode\u003eed18840\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed typo in stub release notes for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/de3f622b7fa72aee68650f15263f2788b626680a\"\u003e\u003ccode\u003ede3f622\u003c/code\u003e\u003c/a\u003e [5.2.x] Added stub release notes and release date for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fb61c8a6e902abc885048a1a78592a4bd4329f87\"\u003e\u003ccode\u003efb61c8a\u003c/code\u003e\u003c/a\u003e [5.2.x] Refs CVE-2026-4292 -- Isolated new test in AdminViewListEditable.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/bd1a7583061a96059ea560eb7b59bebce4240778\"\u003e\u003ccode\u003ebd1a758\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed two issues in release helper scripts/verify_release.sh.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/da57aaad76e674fdb01b741974acf229d3ac4132\"\u003e\u003ccode\u003eda57aaa\u003c/code\u003e\u003c/a\u003e [5.2.x] Added CVE-2026-3902, CVE-2026-4277, CVE-2026-4292, CVE-2026-33033, an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9a8bdbc4839a442b1a0453bd8ed38def4776139\"\u003e\u003ccode\u003ec9a8bdb\u003c/code\u003e\u003c/a\u003e [5.2.x] Post-release version bump.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/5.2.12...5.2.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges to Messages\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7\"\u003e\u003ccode\u003e74df14b\u003c/code\u003e\u003c/a\u003e Add changelog for mypy 2.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff\"\u003e\u003ccode\u003e022d9bc\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;TypeForm: Enable by default (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21262\"\u003e#21262\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c\"\u003e\u003ccode\u003e8826288\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt.random (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21463\"\u003e#21463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96\"\u003e\u003ccode\u003e3f4067b\u003c/code\u003e\u003c/a\u003e Bump librt version to 0.11.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21458\"\u003e#21458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e\"\u003e\u003ccode\u003e2b1eb58\u003c/code\u003e\u003c/a\u003e [mypyc] Enable incremental self-compilation (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21369\"\u003e#21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc\"\u003e\u003ccode\u003e8152f4a\u003c/code\u003e\u003c/a\u003e Respect file config comments for stale modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21444\"\u003e#21444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92\"\u003e\u003ccode\u003e116d60b\u003c/code\u003e\u003c/a\u003e Fix nondeterminism from nonassociativity of overload joins (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210\"\u003e\u003ccode\u003e6c4af8e\u003c/code\u003e\u003c/a\u003e Fix function call message change for small number of args (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21432\"\u003e#21432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800\"\u003e\u003ccode\u003e4b8fdca\u003c/code\u003e\u003c/a\u003e [mypyc] Add librt.random module (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21433\"\u003e#21433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.55.0 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.55.0...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-channels` from 4.3.0.20250822 to 4.3.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pytz` from 2025.2.0.20251108 to 2026.2.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 80.10.0.20260124 to 82.0.0.20260518\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/edsanpemc/paperless-ngx/pull/41","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsanpemc%2Fpaperless-ngx/issues/41","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/41/packages"}},{"old_version":"0.63.1","new_version":"1.0.0","update_type":"major","path":"the actions group","pr_created_at":"2026-05-20T21:54:31.000Z","version_change":"0.63.1 → 1.0.0","issue":{"uuid":"4490176442","node_id":"PR_kwDOMmoEl87dtqkW","number":1603,"state":"closed","title":"⬆️ Bump pyrefly from 0.63.1 to 1.0.0 in the actions group","user":"dependabot[bot]","labels":["topic: dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-20T22:03:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-20T21:54:31.000Z","updated_at":"2026-05-20T22:03:57.000Z","time_to_close":556,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"⬆️ Bump","packages":[{"name":"pyrefly","old_version":"0.63.1","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":"the actions group","ecosystem":"pip"},"body":"Bumps the actions group with 1 update: [pyrefly](https://github.com/facebook/pyrefly).\n\nUpdates `pyrefly` from 0.63.1 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.1...1.0.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.63.1\u0026new-version=1.0.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 \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/scipy/scipy-stubs/pull/1603","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipy%2Fscipy-stubs/issues/1603","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1603/packages"}},{"old_version":"0.64.1","new_version":"1.0.0","update_type":"major","path":null,"pr_created_at":"2026-05-16T05:03:32.000Z","version_change":"0.64.1 → 1.0.0","issue":{"uuid":"4458632316","node_id":"PR_kwDOQcsJgc7cJqRc","number":126,"state":"open","title":"chore(deps):(deps-dev): bump pyrefly from 0.64.1 to 1.0.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-16T05:03:32.000Z","updated_at":"2026-05-16T05:03:33.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps):(deps-dev)","packages":[{"name":"pyrefly","old_version":"0.64.1","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.64.1 to 1.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.1...1.0.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.64.1\u0026new-version=1.0.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)\n\n\n\u003c/details\u003e","html_url":"https://github.com/BrianLusina/image-research-assistant/pull/126","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianLusina%2Fimage-research-assistant/issues/126","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/126/packages"}},{"old_version":"0.60.0","new_version":"1.0.0","update_type":"major","path":null,"pr_created_at":"2026-05-15T03:38:47.000Z","version_change":"0.60.0 → 1.0.0","issue":{"uuid":"4451031951","node_id":"PR_kwDOSEb-G87bxRkZ","number":27,"state":"closed","title":"Bump the dev group across 1 directory with 43 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-22T03:26:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-15T03:38:47.000Z","updated_at":"2026-05-22T03:26:49.000Z","time_to_close":604080,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dev","update_count":43,"packages":[{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"faker","old_version":"40.13.0","new_version":"40.18.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.39.0","new_version":"1.39.4","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.10","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-aiofiles","old_version":"25.1.0.20260409","new_version":"25.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260408","new_version":"7.0.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20260408","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20260408","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260408","new_version":"1.3.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260408","new_version":"0.22.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20260408","new_version":"6.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20260408","new_version":"4.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"26.4.0.20260409","new_version":"26.4.0.20260512","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.4.0.20260409","new_version":"3.5.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20260408","new_version":"1.1.11.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260408","new_version":"3.10.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20260408","new_version":"3.3.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20260408","new_version":"3.6.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20260408","new_version":"0.47.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260408","new_version":"3.1.5.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260408","new_version":"4.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"7.34.1.20260408","new_version":"7.34.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260408","new_version":"7.2.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260408","new_version":"2.9.21.20260509","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.20.0.20260408","new_version":"2.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20260408","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260408","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260408","new_version":"311.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20260408","new_version":"6.0.12.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.4.4.20260408","new_version":"2026.5.9.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20260408","new_version":"2.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20260408","new_version":"3.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260408","new_version":"2.18.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260408","new_version":"4.67.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.88","new_version":"1.43.8","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260408","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.12","new_version":"6.152.7","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260408","new_version":"2.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260408","new_version":"82.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.17.1.3","new_version":"1.17.1.4","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.20.1","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.60.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 43 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [faker](https://github.com/joke2k/faker) | `40.13.0` | `40.18.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.39.0` | `1.39.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.10` | `0.15.13` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20260409` | `25.1.0.20260508` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260408` | `7.0.0.20260503` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20260408` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20260408` | `0.7.0.20260504` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260408` | `1.3.1.20260508` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260408` | `0.22.3.20260508` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20260408` | `6.0.0.20260508` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20260408` | `4.1.0.20260508` |\n| [types-gevent](https://github.com/python/typeshed) | `26.4.0.20260409` | `26.4.0.20260512` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.4.0.20260409` | `3.5.0.20260508` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20260408` | `1.1.11.20260508` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260408` | `3.10.2.20260508` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20260408` | `3.3.0.20260508` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20260408` | `3.6.0.20260508` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20260408` | `0.47.0.20260508` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260408` | `3.1.5.20260508` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260408` | `4.9.0.20260508` |\n| [types-protobuf](https://github.com/python/typeshed) | `7.34.1.20260408` | `7.34.1.20260508` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260408` | `7.2.2.20260508` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260408` | `2.9.21.20260509` |\n| [types-pygments](https://github.com/python/typeshed) | `2.20.0.20260408` | `2.20.0.20260508` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20260408` | `1.1.0.20260508` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260408` | `2.9.0.20260508` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260408` | `311.0.0.20260508` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20260408` | `6.0.12.20260510` |\n| [types-regex](https://github.com/python/typeshed) | `2026.4.4.20260408` | `2026.5.9.20260510` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20260408` | `2.1.0.20260508` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20260408` | `3.20.0.20260508` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260408` | `2.18.0.20260508` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260408` | `4.67.3.20260508` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.88` | `1.43.8` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260408` | `1.1.0.20260508` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.12` | `6.152.7` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260408` | `2.0.0.20260508` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260408` | `82.0.0.20260508` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.17.1.3` | `1.17.1.4` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.20.1` | `2.1.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.60.0` | `1.0.0` |\n\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.13.0 to 40.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.18.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.18.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.17.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.17.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.16.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.16.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/v40.18.0/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.17.0...v40.18.0\"\u003ev40.18.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd automotive providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales. Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ephone_number\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales. Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.16.0...v40.17.0\"\u003ev40.17.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eam_ET\u003c/code\u003e \u003ccode\u003ephone_number\u003c/code\u003e provider for Ethiopia. Thanks \u003ca href=\"https://github.com/jasur-py\"\u003e\u003ccode\u003e@​jasur-py\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.15.0...v40.16.0\"\u003ev40.16.0 - 2026-05-14\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicate phone number prefix \u003ccode\u003e145\u003c/code\u003e in \u003ccode\u003ezh_CN\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/r266-tec\"\u003e\u003ccode\u003e@​r266-tec\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/7a79d1b815c72cdd570e47002a1d6d90b8282bef\"\u003e\u003ccode\u003e7a79d1b\u003c/code\u003e\u003c/a\u003e Bump version: 40.17.0 → 40.18.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/22334a6867869f87f174a168e0c1783241b23bb4\"\u003e\u003ccode\u003e22334a6\u003c/code\u003e\u003c/a\u003e :pencil: Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/8a7fa46a337e01eba9ec1c1af51e740d60940f1d\"\u003e\u003ccode\u003e8a7fa46\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a70229ebf3abb0e2e44529e884bbe3d5aec9be8a\"\u003e\u003ccode\u003ea70229e\u003c/code\u003e\u003c/a\u003e Add automotive providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2346\"\u003e#2346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/9dc592c21400f42a488e87850e30856a14ab4bd2\"\u003e\u003ccode\u003e9dc592c\u003c/code\u003e\u003c/a\u003e add \u003ccode\u003ephone_number\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2338\"\u003e#2338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/7e8ec9c8c60679e404b5ca647a207168832c8ba4\"\u003e\u003ccode\u003e7e8ec9c\u003c/code\u003e\u003c/a\u003e Bump version: 40.16.0 → 40.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/48fbd622669263bcbd2b822568a830512948d365\"\u003e\u003ccode\u003e48fbd62\u003c/code\u003e\u003c/a\u003e :pencil: Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/696ebf93a8310d621d6dd90426844de023d9ef50\"\u003e\u003ccode\u003e696ebf9\u003c/code\u003e\u003c/a\u003e :lipstick: Format code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c339633949b44f5ab3c34d1b2046acddfae7e39\"\u003e\u003ccode\u003e0c33963\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eam_ET\u003c/code\u003e \u003ccode\u003ephone_number\u003c/code\u003e provider for Ethiopia (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2353\"\u003e#2353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bec4ec21e9a75056e1fcf250d5aebcf22a415ca1\"\u003e\u003ccode\u003ebec4ec2\u003c/code\u003e\u003c/a\u003e :pencil: fix changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.39.0 to 1.39.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/b058a6450c9f2a720257f56a1f7ed8a4cdf33a15\"\u003e\u003ccode\u003eb058a64\u003c/code\u003e\u003c/a\u003e 1.39.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5e1f1fb60ff9f646a0d039e3070a0abb75e9db6a\"\u003e\u003ccode\u003e5e1f1fb\u003c/code\u003e\u003c/a\u003e Fix: treat  \u003ccode\u003emap\u003c/code\u003e \u0026amp; \u003ccode\u003efilter\u003c/code\u003e as not subscriptable at runtime and don't show g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/f9730a824e91dd75c3871bc894ee0d73bec682a9\"\u003e\u003ccode\u003ef9730a8\u003c/code\u003e\u003c/a\u003e bump python dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/a465682f20214a43fff4f3e82d02b74d322e6e3e\"\u003e\u003ccode\u003ea465682\u003c/code\u003e\u003c/a\u003e Update installation docs for PyCharm (\u003ca href=\"https://redirect.github.com/detachhead/basedpyright/issues/1643\"\u003e#1643\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5f6672701c5b6a739563894256418845239be2a2\"\u003e\u003ccode\u003e5f66727\u003c/code\u003e\u003c/a\u003e 1.39.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/d8741dfc88be16e11c66cceff78e6e2634ddf49b\"\u003e\u003ccode\u003ed8741df\u003c/code\u003e\u003c/a\u003e hopefully fix docs deployment job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ceb200c192bb53629b4c62fdc082ec27b108f316\"\u003e\u003ccode\u003eceb200c\u003c/code\u003e\u003c/a\u003e 1.39.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eb7a92cacd2697acb4e36e2f3147333588c88fa7\"\u003e\u003ccode\u003eeb7a92c\u003c/code\u003e\u003c/a\u003e try to fix browser-basedpyright being published with nothing in it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/dec5306e9aabbce3f9b1b9ec283981d92dd43d80\"\u003e\u003ccode\u003edec5306\u003c/code\u003e\u003c/a\u003e update package-lock.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.39.0...v1.39.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.10 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.10...0.15.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20260409 to 25.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260408 to 7.0.0.20260503\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20260408 to 0.4.15.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20260408 to 0.7.0.20260504\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260408 to 1.3.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260408 to 0.22.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20260408 to 6.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20260408 to 4.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 26.4.0.20260409 to 26.4.0.20260512\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.4.0.20260409 to 3.5.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20260408 to 1.1.11.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260408 to 3.10.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20260408 to 3.3.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20260408 to 3.6.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20260408 to 0.47.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260408 to 3.1.5.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260408 to 4.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 7.34.1.20260408 to 7.34.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260408 to 7.2.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260408 to 2.9.21.20260509\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.20.0.20260408 to 2.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20260408 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260408 to 2.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260408 to 311.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20260408 to 6.0.12.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.4.4.20260408 to 2026.5.9.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20260408 to 2.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20260408 to 3.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260408 to 2.18.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.3.20260408 to 4.67.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.42.88 to 1.43.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.1.0.20260408 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.12 to 6.152.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.7\u003c/h2\u003e\n\u003cp\u003eThis patch improves our type hints for \u0026quot;.filter()\u0026quot; to work with\n\u0026quot;typing.TypeGuard\u0026quot;. For example:\u003c/p\u003e\n\u003cp\u003efrom typing import TypeGuard\u003c/p\u003e\n\u003cp\u003efrom hypothesis import strategies as st\u003c/p\u003e\n\u003cp\u003edef is_str(x: object) -\u0026gt; TypeGuard[str]:\nreturn isinstance(x, str)\u003c/p\u003e\n\u003cp\u003es = st.from_type(object).filter(is_str)\u003c/p\u003e\n\u003ch1\u003epreviously: SearchStrategy[object]\u003c/h1\u003e\n\u003ch1\u003enow: SearchStrategy[str]\u003c/h1\u003e\n\u003cp\u003ereveal_type(s)\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-7\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.6\u003c/h2\u003e\n\u003cp\u003eThis patch adds a shrinking pass that tries natural text\ntransformations - unicode decomposition (NFD/NFKD) and case mapping -\non individual characters in string choices.  Failures involving e.g.\n\u0026quot;\u0026quot;À\u0026quot; != \u0026quot;À\u0026quot;.lower()\u0026quot; will now reliably shrink to \u0026quot;\u0026quot;A\u0026quot;\u0026quot; rather than\nsometimes getting stuck on the high-codepoint accented form (issue\n\u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4725\"\u003e#4725\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-6\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.5\u003c/h2\u003e\n\u003cp\u003eThis patch improves the \u0026quot;Phase.explain\u0026quot; phase so that simple cases\nlike \u0026quot;assert n1 == n2\u0026quot; no longer get a misleading \u0026quot;# or any other\ngenerated value\u0026quot; comment (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4715\"\u003e#4715\u003c/a\u003e). Before falling back to random\nsampling, we now also try borrowing values from each other arg slice\nwith matching shape.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-5\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.4\u003c/h2\u003e\n\u003cp\u003eThis patch fixes a rare internal error during \u0026quot;Phase.explain\u0026quot;\nintroduced in version 6.149.0 for certain strategies (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4708\"\u003e#4708\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-4\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.3\u003c/h2\u003e\n\u003cp\u003eThe \u0026quot;hypothesis-urandom\u0026quot; backend now reads from \u0026quot;/dev/urandom\u0026quot; with\nbuffering disabled, which improves the control of those hooking\n\u0026quot;/dev/urandom\u0026quot; to change or read Hypothesis's random decisions.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-3\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/adc8d2d4d3dbdbc640d00e216782ef5dd3611640\"\u003e\u003ccode\u003eadc8d2d\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.7 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d66ce67fed6cf77dd8bc14fb88f2d97d027458c4\"\u003e\u003ccode\u003ed66ce67\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4672\"\u003e#4672\u003c/a\u003e from CharString/annotate-filter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/df889578276ee8624e95692ba8f0a57b0a04c487\"\u003e\u003ccode\u003edf88957\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4727\"\u003e#4727\u003c/a\u003e from hettlage/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/415443cd82dcd389d398a7f36ebf41ea6162a7d6\"\u003e\u003ccode\u003e415443c\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/bfd0ebfe74bcfc0447498259ec008c0fa13ee976\"\u003e\u003ccode\u003ebfd0ebf\u003c/code\u003e\u003c/a\u003e Revert RELEASE.rst to original version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/492f8185f80935a6cfc26e0c54bc9f5aed882c80\"\u003e\u003ccode\u003e492f818\u003c/code\u003e\u003c/a\u003e attempt to de-flake test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/55ab356dc1b96b59821db851ebce3bdf483c2eb6\"\u003e\u003ccode\u003e55ab356\u003c/code\u003e\u003c/a\u003e fix release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/7fd8e506efc43ce9b0d19993fc2cf8eb759d273f\"\u003e\u003ccode\u003e7fd8e50\u003c/code\u003e\u003c/a\u003e simplify type hints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c8b952ed27af8aa7f5fcc90c136f4dfff649adc7\"\u003e\u003ccode\u003ec8b952e\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into annotate-filter-4672\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/b2e8d8968eb3fd85391febfe96ea24703faf23a9\"\u003e\u003ccode\u003eb2e8d89\u003c/code\u003e\u003c/a\u003e add tests and release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.12...hypothesis-python-6.152.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260408 to 2.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260408 to 82.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.17.1.3 to 1.17.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.4\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eapprox_fprime\u003c/code\u003e and \u003ccode\u003enewton\u003c/code\u003e to accept functions returning n-D arrays in \u003ccode\u003escipy.optimize\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e✨ Improved shape-typing support for statistical testing functions in \u003ccode\u003escipy.stats\u003c/code\u003e and FFT shifting functions in \u003ccode\u003escipy.fft\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒️ Enforce \u003ca href=\"https://github.com/zizmorcore/zizmor\"\u003ezizmor\u003c/a\u003e to improve security in GitHub Actions and dependabot (guard against supply-chain attacks, cache poisoning, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_signal_api\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1492\"\u003escipy/scipy-stubs#1492\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_delegators\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1493\"\u003escipy/scipy-stubs#1493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eks_2samp\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1494\"\u003escipy/scipy-stubs#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ebrunnermunzel\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1497\"\u003escipy/scipy-stubs#1497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ef_oneway\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1499\"\u003escipy/scipy-stubs#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ekruskal\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1500\"\u003escipy/scipy-stubs#1500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003esigmaclip\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1501\"\u003escipy/scipy-stubs#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efftpack\u003c/code\u003e: improve return dtypes for real transforms by \u003ca href=\"https://github.com/Deshan-5\"\u003e\u003ccode\u003e@​Deshan-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1509\"\u003escipy/scipy-stubs#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improve \u003ccode\u003elp2{lp,hp,bp,bs}[_zpk]\u003c/code\u003e and \u003ccode\u003ebilinear_zpk\u003c/code\u003e by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1523\"\u003escipy/scipy-stubs#1523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats.dunnett\u003c/code\u003e: support for \u003ccode\u003elongdouble\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1528\"\u003escipy/scipy-stubs#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1532\"\u003escipy/scipy-stubs#1532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e_lib._uarray._backend\u003c/code\u003e: fix \u003ccode\u003ewrap_single_convertor[_instance]\u003c/code\u003e overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1481\"\u003escipy/scipy-stubs#1481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: add vector-valued \u003ccode\u003eapprox_fprime\u003c/code\u003e overload by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1530\"\u003escipy/scipy-stubs#1530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003e[i]fftshift\u003c/code\u003e dtype preservation for int and bool inputs by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1533\"\u003escipy/scipy-stubs#1533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: generalize \u003ccode\u003enewton\u003c/code\u003e overloads to ND arrays by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1534\"\u003escipy/scipy-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e↪️ Workarounds\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: improve CSC and CSR array/matrix constructor compatibility with mypy by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1485\"\u003escipy/scipy-stubs#1485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Monad to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1498\"\u003escipy/scipy-stubs#1498\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Maintenance\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e🔖 prepare for further development by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1480\"\u003escipy/scipy-stubs#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update uv-build requirement from \u0026lt;0.11,\u0026gt;=0.10.9 to \u0026gt;=0.10.9,\u0026lt;0.12 in the actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1482\"\u003escipy/scipy-stubs#1482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ ty 0.0.25 by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1483\"\u003escipy/scipy-stubs#1483\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/ff66e8a4a3b9fec77d32193965e4ad3d9acfea84\"\u003e\u003ccode\u003eff66e8a\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/1ba8ccfa1942dff275792fc486656e3fe12f4ee6\"\u003e\u003ccode\u003e1ba8ccf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1546\"\u003e#1546\u003c/a\u003e from scipy/fix-mypy_primer-comment-workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4beb7de3cc744f24a0f017b81b9a58202e8e9aa\"\u003e\u003ccode\u003eb4beb7d\u003c/code\u003e\u003c/a\u003e 💚 fix mypy_primer comment workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/74945653316a671d475f06f86520f378f3c420b9\"\u003e\u003ccode\u003e7494565\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1545\"\u003e#1545\u003c/a\u003e from scipy/bump-mypy-pyrefly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/12f0735b88e3fe47860b2e4f9a5074a277e0cf50\"\u003e\u003ccode\u003e12f0735\u003c/code\u003e\u003c/a\u003e ⬆️ mypy 1.20.1 and pyrefly 0.60.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b9efc6fb754a4be43ffd7443713f744e419951bf\"\u003e\u003ccode\u003eb9efc6f\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support (\u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/009d10ed67d5e8d3657750bb455d7b7a2cdd8496\"\u003e\u003ccode\u003e009d10e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1544\"\u003e#1544\u003c/a\u003e from scipy/zizmor/update_dprint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cac2b4a50fcc32a7dbd68742d20fc85b05570cca\"\u003e\u003ccode\u003ecac2b4a\u003c/code\u003e\u003c/a\u003e 🔒️ fix zizmor \u003ccode\u003e--pedantic\u003c/code\u003e audits in \u003ccode\u003eupdate_dprint.yml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cab3222674d15ce35370a8852d541439131e6035\"\u003e\u003ccode\u003ecab3222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1543\"\u003e#1543\u003c/a\u003e from scipy/zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/483a2d3d7b95b5cda285ac4788ec66008e06852b\"\u003e\u003ccode\u003e483a2d3\u003c/code\u003e\u003c/a\u003e 💡 ignore zizmor error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.17.1.3...v1.17.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.20.1 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges to Messages\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7\"\u003e\u003ccode\u003e74df14b\u003c/code\u003e\u003c/a\u003e Add changelog for mypy 2.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff\"\u003e\u003ccode\u003e022d9bc\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;TypeForm: Enable by default (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21262\"\u003e#21262\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c\"\u003e\u003ccode\u003e8826288\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt.random (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21463\"\u003e#21463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96\"\u003e\u003ccode\u003e3f4067b\u003c/code\u003e\u003c/a\u003e Bump librt version to 0.11.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21458\"\u003e#21458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e\"\u003e\u003ccode\u003e2b1eb58\u003c/code\u003e\u003c/a\u003e [mypyc] Enable incremental self-compilation (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21369\"\u003e#21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc\"\u003e\u003ccode\u003e8152f4a\u003c/code\u003e\u003c/a\u003e Respect file config comments for stale modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21444\"\u003e#21444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92\"\u003e\u003ccode\u003e116d60b\u003c/code\u003e\u003c/a\u003e Fix nondeterminism from nonassociativity of overload joins (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210\"\u003e\u003ccode\u003e6c4af8e\u003c/code\u003e\u003c/a\u003e Fix function call message change for small number of args (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21432\"\u003e#21432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800\"\u003e\u003ccode\u003e4b8fdca\u003c/code\u003e\u003c/a\u003e [mypyc] Add librt.random module (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21433\"\u003e#21433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.60.0 to 1.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.60.0...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/NH3CH2COOH/dify-for-adaption/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/NH3CH2COOH%2Fdify-for-adaption/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"}},{"old_version":"0.63.1","new_version":"0.64.0","update_type":"minor","path":"the actions group","pr_created_at":"2026-05-13T18:10:35.000Z","version_change":"0.63.1 → 0.64.0","issue":{"uuid":"4440163919","node_id":"PR_kwDOMmoEl87bO5bO","number":1594,"state":"closed","title":"⬆️ Bump pyrefly from 0.63.1 to 0.64.0 in the actions group","user":"dependabot[bot]","labels":["topic: dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-13T18:11:49.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-13T18:10:35.000Z","updated_at":"2026-05-13T18:11:58.000Z","time_to_close":74,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"⬆️ Bump","packages":[{"name":"pyrefly","old_version":"0.63.1","new_version":"0.64.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":"the actions group","ecosystem":"pip"},"body":"Bumps the actions group with 1 update: [pyrefly](https://github.com/facebook/pyrefly).\n\nUpdates `pyrefly` from 0.63.1 to 0.64.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: May 05, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.64.0 bundles \u003cstrong\u003e190 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- You can now pass generic or overloaded callables to higher-order functions and Pyrefly will preserve their structure in the return type. For example, \u003ccode\u003eidentity(identity)\u003c/code\u003e now correctly returns a generic callable instead of degrading to \u003ccode\u003eUnknown\u003c/code\u003e. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Same-scope class rebinds (like \u003ccode\u003eReal = Dummy\u003c/code\u003e after \u003ccode\u003eclass Real\u003c/code\u003e) are now checked against the original class as if it were an implicit \u003ccode\u003etype[Real]\u003c/code\u003e annotation, preventing silent type changes and fixing spurious constructor-call errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Generic classes with missing type arguments in lax mode now default to \u003ccode\u003eAny\u003c/code\u003e instead of raising variance errors, improving consistency with how we handle other incomplete types. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pydantic \u003ccode\u003efield_validator\u003c/code\u003e decorators with \u003ccode\u003emode='before'\u003c/code\u003e and \u003ccode\u003emode='plain'\u003c/code\u003e are now supported, allowing validators to accept broader input types before coercion. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Spurious unpack diagnostics are no longer emitted when the right-hand side involves \u003ccode\u003eNever\u003c/code\u003e (e.g. \u003ccode\u003ea, b, c = never()\u003c/code\u003e or \u003ccode\u003ea, b = (never(), 1)\u003c/code\u003e). The unpack solver is now \u003ccode\u003eNever\u003c/code\u003e-aware, recognizing that the producing expression cannot complete and any error message at the unpack site would be misleading. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- \u003ccode\u003eassert\u003c/code\u003e statements now check that \u003ccode\u003e__bool__\u003c/code\u003e is callable on the test expression, matching the behavior already in place for \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions (and aligning with mypy and pyright).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The language server now advertises both \u003ccode\u003esource.fixAll\u003c/code\u003e and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e code action kinds, enabling selective fix-on-save configuration across editors that implement the LSP protocol. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Document highlights now correctly distinguish between read and write references, setting \u003ccode\u003eDocumentHighlightKind::WRITE\u003c/code\u003e for assignments and declarations. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Go-to-definition on relative imports in site-packages files now correctly resolves to the package source instead of returning null when a \u003ccode\u003epyproject.toml\u003c/code\u003e exists at the project root. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Notebook cell index resolution has been fixed to prevent mismatches between code cells and markdown cells, eliminating panics and incorrect byte offset calculations in Jupyter notebooks. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Cross-module \u0026quot;find references\u0026quot; (external references) is now enabled by default, returning references across the entire project rather than just the current file. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new quick fix turns the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members into a code action that replaces the offending string literal with the proper enum member access. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003e# pyrefly: ignore\u003c/code\u003e quick fix inserts a suppression comment for the diagnostic at the cursor, automatically merging into an existing pyrefly-ignore directive on the same line or on a comment-only line above when present. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Numeric parameter defaults now preserve their source spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e, \u003ccode\u003e0xFF\u003c/code\u003e, \u003ccode\u003e0b101\u003c/code\u003e) in hover and signature display rather than being normalized to decimal. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Code actions documentation has been added to the IDE Supported Features page, covering quick fixes and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e configuration.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOnboarding \u0026amp; VS Code Extension\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A redesigned unconfigured-project experience: when no \u003ccode\u003epyrefly.toml\u003c/code\u003e is found, Pyrefly auto-detects nearby \u003ccode\u003emypy.ini\u003c/code\u003e, \u003ccode\u003epyrightconfig.json\u003c/code\u003e, or \u003ccode\u003e[tool.mypy]\u003c/code\u003e/\u003ccode\u003e[tool.pyright]\u003c/code\u003e sections in \u003ccode\u003epyproject.toml\u003c/code\u003e and synthesizes an in-memory configuration migrated from those settings (using the \u003ccode\u003elegacy\u003c/code\u003e or \u003ccode\u003edefault\u003c/code\u003e preset respectively). With no detectable configuration, the new \u003ccode\u003ebasic\u003c/code\u003e preset is used. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.typeCheckingMode\u003c/code\u003e workspace setting (auto / off / basic / legacy / default / strict, default \u003ccode\u003eauto\u003c/code\u003e) lets users pick a preset for files not covered by an explicit Pyrefly configuration, directly from the VS Code settings UI. The legacy \u003ccode\u003epython.pyrefly.displayTypeErrors\u003c/code\u003e setting is now deprecated, with values transparently mapped to the new model. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.disableTypeErrors\u003c/code\u003e workspace setting provides a clean per-workspace kill switch for diagnostics, independent of the type-checking mode. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The VS Code status bar has been redesigned: it now shows the active preset (e.g. \u0026quot;Pyrefly (Legacy)\u0026quot;, \u0026quot;Pyrefly (Basic)\u0026quot;) and the tooltip explains why that preset was chosen and links to the relevant docs. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- After a \u003ccode\u003epyrefly check\u003c/code\u003e on an unconfigured project, the CLI now prints a short upsell to \u003cstrong\u003estderr\u003c/strong\u003e explaining what configuration was synthesized and pointing at \u003ccode\u003epyrefly init\u003c/code\u003e. The message is routed to stderr so machine-readable stdout formats (e.g. \u003ccode\u003e--output-format json\u003c/code\u003e) remain untouched.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Configuration presets (\u003ccode\u003eoff\u003c/code\u003e, \u003ccode\u003ebasic\u003c/code\u003e, \u003ccode\u003elegacy\u003c/code\u003e, \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003estrict\u003c/code\u003e) are now available via the \u003ccode\u003epreset\u003c/code\u003e option, providing named collections of error severities and behavior settings as a base configuration that user settings can override. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003elegacy\u003c/code\u003e preset is now used by \u003ccode\u003epyrefly init\u003c/code\u003e for mypy migration, disabling checks mypy doesn't have and setting looser inference defaults. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eimplicit-any\u003c/code\u003e error code has been split into sub-kinds (\u003ccode\u003eimplicit-any-attribute\u003c/code\u003e, \u003ccode\u003eimplicit-any-empty-container\u003c/code\u003e, \u003ccode\u003eimplicit-any-parameter\u003c/code\u003e, \u003ccode\u003eimplicit-any-type-argument\u003c/code\u003e) with \u003ccode\u003eimplicit-any\u003c/code\u003e as the parent, allowing finer-grained control over where implicit \u003ccode\u003eAny\u003c/code\u003e is flagged. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eunbound-name\u003c/code\u003e error is now disabled in the \u003ccode\u003elegacy\u003c/code\u003e preset to match mypy's default behavior, which does not flag possibly-undefined variables.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Reporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eincompatible-overload-residual\u003c/code\u003e error kind has been introduced for cases where all branches of an overloaded callable are pruned during higher-order function analysis, making it easier to configure these errors independently. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Error messages for all-pruned overload residuals now describe the incompatibility in terms of \u0026quot;solved type variables\u0026quot; rather than \u0026quot;solved type constraints\u0026quot; for better clarity. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003epyrefly suppress\u003c/code\u003e command now correctly handles removal of unused ignores via the \u003ccode\u003e--remove-unused\u003c/code\u003e flag, which was previously broken.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eFactory Boy Support\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Pyrefly now infers the correct model return types for \u003ccode\u003ecreate()\u003c/code\u003e, \u003ccode\u003ebuild()\u003c/code\u003e, \u003ccode\u003ecreate_batch()\u003c/code\u003e, and \u003ccode\u003ebuild_batch()\u003c/code\u003e methods on \u003ccode\u003eDjangoModelFactory\u003c/code\u003e subclasses by reading the inner \u003ccode\u003eMeta.model\u003c/code\u003e attribute. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- False-positive \u003ccode\u003ebad-override\u003c/code\u003e errors on the inner \u003ccode\u003eMeta\u003c/code\u003e class in factory-boy factories are now suppressed, matching how we handle Django and Marshmallow.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The \u003ccode\u003epyrefly report\u003c/code\u003e JSON output now includes a \u003ccode\u003epath\u003c/code\u003e field on each \u003ccode\u003eModuleReport\u003c/code\u003e, for compatibility with typestats and similar tooling.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Deeply-nested dict literals no longer cause exponential memory growth during type inference. A depth-25 dict literal that previously consumed ~7.7 GB now uses ~239 MB by computing the union of field types on demand instead of storing it redundantly. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Callable residual finalization has been optimized to avoid redundant type cloning and traversals, reducing memory churn in attribute-heavy code. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Eliminated some bugs that caused Pyrefly to unnecessarily analyze dependencies, improving latency and memory use, especially in the IDE.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e15\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3057\"\u003e#3057\u003c/a\u003e: Fixed an issue where string concatenation with the \u003ccode\u003e+\u003c/code\u003e operator was incorrectly flagging \u003ccode\u003estr\u003c/code\u003e as not assignable to \u003ccode\u003eLiteralString\u003c/code\u003e attributes. Pyrefly now preserves \u003ccode\u003eLiteralString\u003c/code\u003e style when adding two explicit string literals and uses implicit style otherwise.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/105\"\u003e#105\u003c/a\u003e: Fixed premature type pinning in function calls where arguments were incorrectly narrowed before all constraints were solved. For example, \u003ccode\u003efoo(x, y)\u003c/code\u003e with \u003ccode\u003ex: int | None\u003c/code\u003e and \u003ccode\u003ey: int | None\u003c/code\u003e no longer incorrectly narrows \u003ccode\u003ex\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e when passed to a generic \u003ccode\u003efoo[T](https://github.com/facebook/pyrefly/blob/HEAD/a: T, b: T)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3198\"\u003e#3198\u003c/a\u003e: Fixed \u003ccode\u003epyrefly suppress --remove-unused\u003c/code\u003e which was not actually removing unused error suppressions. The command now correctly processes the \u003ccode\u003e--remove-unused\u003c/code\u003e flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3024\"\u003e#3024\u003c/a\u003e: The language server now advertises \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e in addition to \u003ccode\u003esource.fixAll\u003c/code\u003e, allowing users to selectively enable or disable Pyrefly's fix-all actions in editors that support LSP code action kinds.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2819\"\u003e#2819\u003c/a\u003e: Fixed incorrect variance errors when using generic classes like Pydantic's \u003ccode\u003eRootModel\u003c/code\u003e in lax mode. Missing type arguments now degrade to \u003ccode\u003eAny\u003c/code\u003e instead of raising errors, matching our handling of other incomplete types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3000\"\u003e#3000\u003c/a\u003e: Fixed \u0026quot;find references\u0026quot; failures in Cursor and other editors caused by relative imports in site-packages not resolving correctly when a \u003ccode\u003epyproject.toml\u003c/code\u003e existed at the project root.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2563\"\u003e#2563\u003c/a\u003e: Fixed go-to-definition on relative imports in virtual environment site-packages, which was returning null because the project root's import path was matching before the more specific site-package prefix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3193\"\u003e#3193\u003c/a\u003e: Fixed an error where \u003ccode\u003elist[\u0026quot;A|B\u0026quot;]\u003c/code\u003e was incorrectly rejected as \u003ccode\u003enot-a-type\u003c/code\u003e. Type argument subscripts are now bound as type expressions even in value context, allowing forward-ref strings to be parsed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3286\"\u003e#3286\u003c/a\u003e: Fixed exponential memory blowup when type-checking deeply-nested dict literals, which could cause VSCode to be killed by the OS. Memory usage for a depth-25 dict dropped from ~7.7 GB to ~239 MB.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3261\"\u003e#3261\u003c/a\u003e: Fixed a false positive \u003ccode\u003ebad-class-definition\u003c/code\u003e when a dataclass field was assigned inside a \u003ccode\u003e@classmethod\u003c/code\u003e or \u003ccode\u003e__init_subclass__\u003c/code\u003e. Pyrefly was incorrectly extracting these as dataclass fields, even though Python's \u003ccode\u003edataclasses.dataclass\u003c/code\u003e ignores them at runtime.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2914\"\u003e#2914\u003c/a\u003e: \u003ccode\u003eassert\u003c/code\u003e statements now flag a non-callable \u003ccode\u003e__bool__\u003c/code\u003e on the test expression, closing a gap that previously only caught the issue inside \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2867\"\u003e#2867\u003c/a\u003e: Fixed \u003ccode\u003eurlunparse\u003c/code\u003e being inferred as returning \u003ccode\u003eLiteral[b'']\u003c/code\u003e instead of \u003ccode\u003estr\u003c/code\u003e. The fix reworks \u003ccode\u003eas_superclass\u003c/code\u003e so tuple-like \u003ccode\u003eNamedTuple\u003c/code\u003e subclasses are upcast through their erased tuple element types, which stops \u003ccode\u003eParseResult\u003c/code\u003e from spuriously matching \u003ccode\u003eIterable[None]\u003c/code\u003e and selecting the bytes overload.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3266\"\u003e#3266\u003c/a\u003e: Added a quick fix for the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members, turning the suggestion into a code action that rewrites the surrounding string literal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3230\"\u003e#3230\u003c/a\u003e: Numeric parameter defaults now preserve their original spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e) in hover and signature display rather than being normalized to a decimal value.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3302\"\u003e#3302\u003c/a\u003e: Added a \u003ccode\u003epath\u003c/code\u003e field to the \u003ccode\u003epyrefly report\u003c/code\u003e JSON \u003ccode\u003eModuleReport\u003c/code\u003e, restoring compatibility with typestats.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e267ba6974db6d041c1fe74975c08d938d8ae3d1\"\u003e\u003ccode\u003ee267ba6\u003c/code\u003e\u003c/a\u003e Fix provide_type race condition with config recheck cancellation (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3316\"\u003e#3316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fe26ba3ace3c39794b19b8220f35c56a19d0b9cf\"\u003e\u003ccode\u003efe26ba3\u003c/code\u003e\u003c/a\u003e Fix failing quick fix test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/6d9611de431d43e26d47b5e97e4499cf9a94e931\"\u003e\u003ccode\u003e6d9611d\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eFuncMetadata::def\u003c/code\u003e to reduce code duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a545b3a13cac916b4d92b69ee82bb936c3432eb0\"\u003e\u003ccode\u003ea545b3a\u003c/code\u003e\u003c/a\u003e Add a more general \u003ccode\u003eFuncMetadata::def\u003c/code\u003e helper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/18b733123f735db871d2442dcb645e2aa90a13ce\"\u003e\u003ccode\u003e18b7331\u003c/code\u003e\u003c/a\u003e Rename \u003ccode\u003eFuncMetadata::def\u003c/code\u003e to \u003ccode\u003eFuncMetadata::method\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/4ecf8c7f3fef10bb9add69f2a4b379e539f5f36b\"\u003e\u003ccode\u003e4ecf8c7\u003c/code\u003e\u003c/a\u003e Remove unnecessary parameters from \u003ccode\u003eFuncMetadata::def\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/c3c366882b9b5011e4a5769a1eaa380335bf67f6\"\u003e\u003ccode\u003ec3c3668\u003c/code\u003e\u003c/a\u003e Deduplicate property handling code in class_field.rs and attr.rs.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/937054ba39175c7dde5c86354ff868078e7388ea\"\u003e\u003ccode\u003e937054b\u003c/code\u003e\u003c/a\u003e Add a bunch more tests for constructing properties via \u003ccode\u003eproperty(...)\u003c/code\u003e call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/5a95af558ad82a40f8148bce062f5a462d0afdea\"\u003e\u003ccode\u003e5a95af5\u003c/code\u003e\u003c/a\u003e Fix handling of fset=None in \u003ccode\u003eproperty(...)\u003c/code\u003e calls\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ea94a54a840cf6f7cada27887d3881589c5c510e\"\u003e\u003ccode\u003eea94a54\u003c/code\u003e\u003c/a\u003e fix Recognize explicitly constructed properties as such \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3141\"\u003e#3141\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3144\"\u003e#3144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.1...0.64.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.63.1\u0026new-version=0.64.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 \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/scipy/scipy-stubs/pull/1594","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipy%2Fscipy-stubs/issues/1594","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1594/packages"}},{"old_version":"0.64.0","new_version":"1.0.0","update_type":"major","path":null,"pr_created_at":"2026-05-13T09:25:22.000Z","version_change":"0.64.0 → 1.0.0","issue":{"uuid":"4436605039","node_id":"PR_kwDOQl9Slc7bDHmc","number":370,"state":"open","title":"chore(deps-dev): bump pyrefly from 0.64.0 to 1.0.0","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":6,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-13T09:25:22.000Z","updated_at":"2026-05-13T09:34:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"pyrefly","old_version":"0.64.0","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.64.0 to 1.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...1.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pyrefly\u0026package-manager=uv\u0026previous-version=0.64.0\u0026new-version=1.0.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)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Ven0m0/gemini-web-wrapper/pull/370","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ven0m0%2Fgemini-web-wrapper/issues/370","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/370/packages"}},{"old_version":"0.64.1","new_version":"1.0.0","update_type":"major","path":null,"pr_created_at":"2026-05-13T00:49:08.000Z","version_change":"0.64.1 → 1.0.0","issue":{"uuid":"4433679548","node_id":"PR_kwDORmRJ-s7a5woT","number":2129,"state":"closed","title":"Bump pyrefly from 0.64.1 to 1.0.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-13T00:53:36.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-13T00:49:08.000Z","updated_at":"2026-05-13T00:53:45.000Z","time_to_close":268,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pyrefly","old_version":"0.64.1","new_version":"1.0.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.64.1 to 1.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v1.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus: STABLE\u003c/strong\u003e\n\u003cem\u003eRelease date: 12 May 2026\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v1.0.0 is here!\u003c/h2\u003e\n\u003cp\u003eWe're thrilled to announce that Pyrefly has reached its stable 1.0.0 release! Since our \u003ca href=\"https://github.com/facebook/pyrefly/releases/tag/0.42.0\"\u003ebeta release\u003c/a\u003e in November 2025, we've fixed hundreds of bugs, improved performance, and added lots of new functionality. Pyrefly is already the default type checker for Instagram at Meta and has been adopted by other large production codebases like PyTorch and JAX. Today, we're making it official: Pyrefly is production ready.\u003c/p\u003e\n\u003cp\u003eThis would not have been possible without our amazing open-source community. To everyone who filed GitHub issues, submitted pull requests, gave us feedback at conferences, or joined us on Discord: thank you. Your contributions shaped this release.\u003c/p\u003e\n\u003cp\u003eThese release notes cover the major highlights since our beta release. For the full history, see our \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epast weekly release notes\u003c/a\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003ePerformance Improvements\u003c/h2\u003e\n\u003cp\u003eWe've continued to push Pyrefly's performance since the \u003ca href=\"https://pyrefly.org/blog/2026/02/06/performance-improvements/\"\u003espeed improvements we shared in February\u003c/a\u003e. Since beta:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e2–125x faster updated diagnostics\u003c/strong\u003e after saving a file (no, that’s not a typo!). Thanks to fine-grained dependency tracking and streaming diagnostics, updates now consistently arrive in milliseconds\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e20–36% faster full type checking\u003c/strong\u003e on large projects like PyTorch and Pandas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e2–3x faster initial indexing\u003c/strong\u003e when Pyrefly first scans your project\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e40–60% less memory usage\u003c/strong\u003e during both indexing and incremental type checking\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(Tested on an M4 Macbook Pro using open-source benchmarks from \u003ca href=\"https://github.com/lolpack/type_coverage_py\"\u003etype_coverage_py\u003c/a\u003e and \u003ca href=\"https://github.com/astral-sh/ruff/tree/e990dfd069fceef96f797b46161ef78862608449/scripts/ty_benchmark\"\u003ety_benchmark\u003c/a\u003e.)\u003c/p\u003e\n\u003cp\u003eCompare the performance of Pyrefly and other Python type checkers on our regularly updated \u003ca href=\"https://python-type-checking.com/typecheck_benchmark/\"\u003ebenchmarking suite\u003c/a\u003e, which runs against 53 popular Python packages.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eConfiguration Presets\u003c/h2\u003e\n\u003cp\u003eA new \u003ccode\u003epreset\u003c/code\u003e configuration option provides named bundles of error severities and behavior settings.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003ePreset\u003c/th\u003e\n\u003cth align=\"left\"\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003eoff\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eSilences all diagnostics. Useful for IDE-only users or if you want total control of which errors are enabled.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003ebasic\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eLow-noise, high-confidence diagnostics only (syntax errors, missing imports, unknown names, etc.). Ideal for unconfigured projects or IDE-first users.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003elegacy\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eFor codebases migrating from mypy. Disables checks mypy doesn't have. \u003ccode\u003epyrefly init\u003c/code\u003e now emits this preset automatically when migrating from a mypy config.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eThe standard Pyrefly experience. Equivalent to having no preset.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003ccode\u003estrict\u003c/code\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003eEnables additional strict checks on top of the \u003ccode\u003edefault\u003c/code\u003e preset. For users who want to avoid \u003ccode\u003eAny\u003c/code\u003e types in their codebase.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pyrefly.org/en/docs/configuration/#preset\"\u003econfiguration docs\u003c/a\u003e for details.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003eOnboarding Experience\u003c/h2\u003e\n\u003cp\u003eWe’ve made improvements to the out-of-the-box experience for projects without a \u003ccode\u003epyrefly.toml\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAutomatic config synthesis\u003c/strong\u003e — if you have a mypy or pyright config, Pyrefly automatically migrates your settings and synthesizes an appropriate in-memory Pyrefly config. (This is the same migration that \u003ccode\u003epyrefly init\u003c/code\u003e would commit to disk.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2362c071caa576f9112781b5571f9e283cd52920\"\u003e\u003ccode\u003e2362c07\u003c/code\u003e\u003c/a\u003e Bump to version 1.0.0 with release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/471bb8316cf40e9d29cbc79d5c701a7dec3ab6b5\"\u003e\u003ccode\u003e471bb83\u003c/code\u003e\u003c/a\u003e Prep README.md and pyproject.toml for V1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f2c6df4c66c726af4c7603272da47b65d91d4d4c\"\u003e\u003ccode\u003ef2c6df4\u003c/code\u003e\u003c/a\u003e Use vanity URLs for unconfigured-config upsell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/d5bf386fd24f8969506f2edd0e06c3896962dbce\"\u003e\u003ccode\u003ed5bf386\u003c/code\u003e\u003c/a\u003e Fix TSP extra IPC connection shutdown hang (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3287\"\u003e#3287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e0a91be41640e70e0cd45a57eae98eecf86459a4\"\u003e\u003ccode\u003ee0a91be\u003c/code\u003e\u003c/a\u003e do not send snapshotchanged to extra connections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3df562c8165ea2ac69b389eb1552f9dbf5c18573\"\u003e\u003ccode\u003e3df562c\u003c/code\u003e\u003c/a\u003e extract TypeErrorDisplayStatus into its own module\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.1...1.0.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=pyrefly\u0026package-manager=pip\u0026previous-version=0.64.1\u0026new-version=1.0.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)\n\n\n\u003c/details\u003e","html_url":"https://github.com/adamtheturtle/literalizer/pull/2129","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamtheturtle%2Fliteralizer/issues/2129","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2129/packages"}},{"old_version":"0.63.1","new_version":"0.64.1","update_type":"minor","path":null,"pr_created_at":"2026-05-11T09:22:38.000Z","version_change":"0.63.1 → 0.64.1","issue":{"uuid":"4419604457","node_id":"PR_kwDONxKINs7aL0GV","number":65,"state":"closed","title":"Bump pyrefly from 0.63.1 to 0.64.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T09:23:30.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T09:22:38.000Z","updated_at":"2026-05-11T09:23:31.000Z","time_to_close":52,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pyrefly","old_version":"0.63.1","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.63.1 to 0.64.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.64.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: May 05, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.64.0 bundles \u003cstrong\u003e190 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- You can now pass generic or overloaded callables to higher-order functions and Pyrefly will preserve their structure in the return type. For example, \u003ccode\u003eidentity(identity)\u003c/code\u003e now correctly returns a generic callable instead of degrading to \u003ccode\u003eUnknown\u003c/code\u003e. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Same-scope class rebinds (like \u003ccode\u003eReal = Dummy\u003c/code\u003e after \u003ccode\u003eclass Real\u003c/code\u003e) are now checked against the original class as if it were an implicit \u003ccode\u003etype[Real]\u003c/code\u003e annotation, preventing silent type changes and fixing spurious constructor-call errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Generic classes with missing type arguments in lax mode now default to \u003ccode\u003eAny\u003c/code\u003e instead of raising variance errors, improving consistency with how we handle other incomplete types. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pydantic \u003ccode\u003efield_validator\u003c/code\u003e decorators with \u003ccode\u003emode='before'\u003c/code\u003e and \u003ccode\u003emode='plain'\u003c/code\u003e are now supported, allowing validators to accept broader input types before coercion. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Spurious unpack diagnostics are no longer emitted when the right-hand side involves \u003ccode\u003eNever\u003c/code\u003e (e.g. \u003ccode\u003ea, b, c = never()\u003c/code\u003e or \u003ccode\u003ea, b = (never(), 1)\u003c/code\u003e). The unpack solver is now \u003ccode\u003eNever\u003c/code\u003e-aware, recognizing that the producing expression cannot complete and any error message at the unpack site would be misleading. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- \u003ccode\u003eassert\u003c/code\u003e statements now check that \u003ccode\u003e__bool__\u003c/code\u003e is callable on the test expression, matching the behavior already in place for \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions (and aligning with mypy and pyright).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The language server now advertises both \u003ccode\u003esource.fixAll\u003c/code\u003e and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e code action kinds, enabling selective fix-on-save configuration across editors that implement the LSP protocol. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Document highlights now correctly distinguish between read and write references, setting \u003ccode\u003eDocumentHighlightKind::WRITE\u003c/code\u003e for assignments and declarations. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Go-to-definition on relative imports in site-packages files now correctly resolves to the package source instead of returning null when a \u003ccode\u003epyproject.toml\u003c/code\u003e exists at the project root. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Notebook cell index resolution has been fixed to prevent mismatches between code cells and markdown cells, eliminating panics and incorrect byte offset calculations in Jupyter notebooks. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Cross-module \u0026quot;find references\u0026quot; (external references) is now enabled by default, returning references across the entire project rather than just the current file. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new quick fix turns the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members into a code action that replaces the offending string literal with the proper enum member access. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003e# pyrefly: ignore\u003c/code\u003e quick fix inserts a suppression comment for the diagnostic at the cursor, automatically merging into an existing pyrefly-ignore directive on the same line or on a comment-only line above when present. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Numeric parameter defaults now preserve their source spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e, \u003ccode\u003e0xFF\u003c/code\u003e, \u003ccode\u003e0b101\u003c/code\u003e) in hover and signature display rather than being normalized to decimal. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Code actions documentation has been added to the IDE Supported Features page, covering quick fixes and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e configuration.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOnboarding \u0026amp; VS Code Extension\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A redesigned unconfigured-project experience: when no \u003ccode\u003epyrefly.toml\u003c/code\u003e is found, Pyrefly auto-detects nearby \u003ccode\u003emypy.ini\u003c/code\u003e, \u003ccode\u003epyrightconfig.json\u003c/code\u003e, or \u003ccode\u003e[tool.mypy]\u003c/code\u003e/\u003ccode\u003e[tool.pyright]\u003c/code\u003e sections in \u003ccode\u003epyproject.toml\u003c/code\u003e and synthesizes an in-memory configuration migrated from those settings (using the \u003ccode\u003elegacy\u003c/code\u003e or \u003ccode\u003edefault\u003c/code\u003e preset respectively). With no detectable configuration, the new \u003ccode\u003ebasic\u003c/code\u003e preset is used. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.typeCheckingMode\u003c/code\u003e workspace setting (auto / off / basic / legacy / default / strict, default \u003ccode\u003eauto\u003c/code\u003e) lets users pick a preset for files not covered by an explicit Pyrefly configuration, directly from the VS Code settings UI. The legacy \u003ccode\u003epython.pyrefly.displayTypeErrors\u003c/code\u003e setting is now deprecated, with values transparently mapped to the new model. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.disableTypeErrors\u003c/code\u003e workspace setting provides a clean per-workspace kill switch for diagnostics, independent of the type-checking mode. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The VS Code status bar has been redesigned: it now shows the active preset (e.g. \u0026quot;Pyrefly (Legacy)\u0026quot;, \u0026quot;Pyrefly (Basic)\u0026quot;) and the tooltip explains why that preset was chosen and links to the relevant docs. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- After a \u003ccode\u003epyrefly check\u003c/code\u003e on an unconfigured project, the CLI now prints a short upsell to \u003cstrong\u003estderr\u003c/strong\u003e explaining what configuration was synthesized and pointing at \u003ccode\u003epyrefly init\u003c/code\u003e. The message is routed to stderr so machine-readable stdout formats (e.g. \u003ccode\u003e--output-format json\u003c/code\u003e) remain untouched.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Configuration presets (\u003ccode\u003eoff\u003c/code\u003e, \u003ccode\u003ebasic\u003c/code\u003e, \u003ccode\u003elegacy\u003c/code\u003e, \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003estrict\u003c/code\u003e) are now available via the \u003ccode\u003epreset\u003c/code\u003e option, providing named collections of error severities and behavior settings as a base configuration that user settings can override. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003elegacy\u003c/code\u003e preset is now used by \u003ccode\u003epyrefly init\u003c/code\u003e for mypy migration, disabling checks mypy doesn't have and setting looser inference defaults. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eimplicit-any\u003c/code\u003e error code has been split into sub-kinds (\u003ccode\u003eimplicit-any-attribute\u003c/code\u003e, \u003ccode\u003eimplicit-any-empty-container\u003c/code\u003e, \u003ccode\u003eimplicit-any-parameter\u003c/code\u003e, \u003ccode\u003eimplicit-any-type-argument\u003c/code\u003e) with \u003ccode\u003eimplicit-any\u003c/code\u003e as the parent, allowing finer-grained control over where implicit \u003ccode\u003eAny\u003c/code\u003e is flagged. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eunbound-name\u003c/code\u003e error is now disabled in the \u003ccode\u003elegacy\u003c/code\u003e preset to match mypy's default behavior, which does not flag possibly-undefined variables.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Reporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eincompatible-overload-residual\u003c/code\u003e error kind has been introduced for cases where all branches of an overloaded callable are pruned during higher-order function analysis, making it easier to configure these errors independently. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Error messages for all-pruned overload residuals now describe the incompatibility in terms of \u0026quot;solved type variables\u0026quot; rather than \u0026quot;solved type constraints\u0026quot; for better clarity. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003epyrefly suppress\u003c/code\u003e command now correctly handles removal of unused ignores via the \u003ccode\u003e--remove-unused\u003c/code\u003e flag, which was previously broken.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eFactory Boy Support\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Pyrefly now infers the correct model return types for \u003ccode\u003ecreate()\u003c/code\u003e, \u003ccode\u003ebuild()\u003c/code\u003e, \u003ccode\u003ecreate_batch()\u003c/code\u003e, and \u003ccode\u003ebuild_batch()\u003c/code\u003e methods on \u003ccode\u003eDjangoModelFactory\u003c/code\u003e subclasses by reading the inner \u003ccode\u003eMeta.model\u003c/code\u003e attribute. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- False-positive \u003ccode\u003ebad-override\u003c/code\u003e errors on the inner \u003ccode\u003eMeta\u003c/code\u003e class in factory-boy factories are now suppressed, matching how we handle Django and Marshmallow.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The \u003ccode\u003epyrefly report\u003c/code\u003e JSON output now includes a \u003ccode\u003epath\u003c/code\u003e field on each \u003ccode\u003eModuleReport\u003c/code\u003e, for compatibility with typestats and similar tooling.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Deeply-nested dict literals no longer cause exponential memory growth during type inference. A depth-25 dict literal that previously consumed ~7.7 GB now uses ~239 MB by computing the union of field types on demand instead of storing it redundantly. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Callable residual finalization has been optimized to avoid redundant type cloning and traversals, reducing memory churn in attribute-heavy code. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Eliminated some bugs that caused Pyrefly to unnecessarily analyze dependencies, improving latency and memory use, especially in the IDE.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e15\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3057\"\u003e#3057\u003c/a\u003e: Fixed an issue where string concatenation with the \u003ccode\u003e+\u003c/code\u003e operator was incorrectly flagging \u003ccode\u003estr\u003c/code\u003e as not assignable to \u003ccode\u003eLiteralString\u003c/code\u003e attributes. Pyrefly now preserves \u003ccode\u003eLiteralString\u003c/code\u003e style when adding two explicit string literals and uses implicit style otherwise.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/105\"\u003e#105\u003c/a\u003e: Fixed premature type pinning in function calls where arguments were incorrectly narrowed before all constraints were solved. For example, \u003ccode\u003efoo(x, y)\u003c/code\u003e with \u003ccode\u003ex: int | None\u003c/code\u003e and \u003ccode\u003ey: int | None\u003c/code\u003e no longer incorrectly narrows \u003ccode\u003ex\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e when passed to a generic \u003ccode\u003efoo[T](https://github.com/facebook/pyrefly/blob/HEAD/a: T, b: T)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3198\"\u003e#3198\u003c/a\u003e: Fixed \u003ccode\u003epyrefly suppress --remove-unused\u003c/code\u003e which was not actually removing unused error suppressions. The command now correctly processes the \u003ccode\u003e--remove-unused\u003c/code\u003e flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3024\"\u003e#3024\u003c/a\u003e: The language server now advertises \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e in addition to \u003ccode\u003esource.fixAll\u003c/code\u003e, allowing users to selectively enable or disable Pyrefly's fix-all actions in editors that support LSP code action kinds.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2819\"\u003e#2819\u003c/a\u003e: Fixed incorrect variance errors when using generic classes like Pydantic's \u003ccode\u003eRootModel\u003c/code\u003e in lax mode. Missing type arguments now degrade to \u003ccode\u003eAny\u003c/code\u003e instead of raising errors, matching our handling of other incomplete types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3000\"\u003e#3000\u003c/a\u003e: Fixed \u0026quot;find references\u0026quot; failures in Cursor and other editors caused by relative imports in site-packages not resolving correctly when a \u003ccode\u003epyproject.toml\u003c/code\u003e existed at the project root.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2563\"\u003e#2563\u003c/a\u003e: Fixed go-to-definition on relative imports in virtual environment site-packages, which was returning null because the project root's import path was matching before the more specific site-package prefix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3193\"\u003e#3193\u003c/a\u003e: Fixed an error where \u003ccode\u003elist[\u0026quot;A|B\u0026quot;]\u003c/code\u003e was incorrectly rejected as \u003ccode\u003enot-a-type\u003c/code\u003e. Type argument subscripts are now bound as type expressions even in value context, allowing forward-ref strings to be parsed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3286\"\u003e#3286\u003c/a\u003e: Fixed exponential memory blowup when type-checking deeply-nested dict literals, which could cause VSCode to be killed by the OS. Memory usage for a depth-25 dict dropped from ~7.7 GB to ~239 MB.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3261\"\u003e#3261\u003c/a\u003e: Fixed a false positive \u003ccode\u003ebad-class-definition\u003c/code\u003e when a dataclass field was assigned inside a \u003ccode\u003e@classmethod\u003c/code\u003e or \u003ccode\u003e__init_subclass__\u003c/code\u003e. Pyrefly was incorrectly extracting these as dataclass fields, even though Python's \u003ccode\u003edataclasses.dataclass\u003c/code\u003e ignores them at runtime.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2914\"\u003e#2914\u003c/a\u003e: \u003ccode\u003eassert\u003c/code\u003e statements now flag a non-callable \u003ccode\u003e__bool__\u003c/code\u003e on the test expression, closing a gap that previously only caught the issue inside \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2867\"\u003e#2867\u003c/a\u003e: Fixed \u003ccode\u003eurlunparse\u003c/code\u003e being inferred as returning \u003ccode\u003eLiteral[b'']\u003c/code\u003e instead of \u003ccode\u003estr\u003c/code\u003e. The fix reworks \u003ccode\u003eas_superclass\u003c/code\u003e so tuple-like \u003ccode\u003eNamedTuple\u003c/code\u003e subclasses are upcast through their erased tuple element types, which stops \u003ccode\u003eParseResult\u003c/code\u003e from spuriously matching \u003ccode\u003eIterable[None]\u003c/code\u003e and selecting the bytes overload.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3266\"\u003e#3266\u003c/a\u003e: Added a quick fix for the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members, turning the suggestion into a code action that rewrites the surrounding string literal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3230\"\u003e#3230\u003c/a\u003e: Numeric parameter defaults now preserve their original spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e) in hover and signature display rather than being normalized to a decimal value.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3302\"\u003e#3302\u003c/a\u003e: Added a \u003ccode\u003epath\u003c/code\u003e field to the \u003ccode\u003epyrefly report\u003c/code\u003e JSON \u003ccode\u003eModuleReport\u003c/code\u003e, restoring compatibility with typestats.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e63fa8d7d9160d3d319569ee2a4439883eaa4c9e\"\u003e\u003ccode\u003ee63fa8d\u003c/code\u003e\u003c/a\u003e remove extensionDependency on ms-python.python (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3326\"\u003e#3326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/15b8f817923a9b3efb8f5192a8ba1359878c3e58\"\u003e\u003ccode\u003e15b8f81\u003c/code\u003e\u003c/a\u003e abstract away python-environment from extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e267ba6974db6d041c1fe74975c08d938d8ae3d1\"\u003e\u003ccode\u003ee267ba6\u003c/code\u003e\u003c/a\u003e Fix provide_type race condition with config recheck cancellation (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3316\"\u003e#3316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fe26ba3ace3c39794b19b8220f35c56a19d0b9cf\"\u003e\u003ccode\u003efe26ba3\u003c/code\u003e\u003c/a\u003e Fix failing quick fix test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/6d9611de431d43e26d47b5e97e4499cf9a94e931\"\u003e\u003ccode\u003e6d9611d\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eFuncMetadata::def\u003c/code\u003e to reduce code duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a545b3a13cac916b4d92b69ee82bb936c3432eb0\"\u003e\u003ccode\u003ea545b3a\u003c/code\u003e\u003c/a\u003e Add a more general \u003ccode\u003eFuncMetadata::def\u003c/code\u003e helper\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.1...0.64.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.63.1\u0026new-version=0.64.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/shinolab/pyautd3_emulator/pull/65","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/shinolab%2Fpyautd3_emulator/issues/65","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/65/packages"}},{"old_version":"0.62.0","new_version":"0.64.1","update_type":"minor","path":null,"pr_created_at":"2026-05-11T07:15:50.000Z","version_change":"0.62.0 → 0.64.1","issue":{"uuid":"4418821015","node_id":"PR_kwDORQiH8c7aJQd0","number":44,"state":"open","title":"chore(deps): Bump pyrefly from 0.62.0 to 0.64.1","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-11T07:15:50.000Z","updated_at":"2026-05-11T07:15:52.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","packages":[{"name":"pyrefly","old_version":"0.62.0","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.62.0 to 0.64.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.64.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: May 05, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.64.0 bundles \u003cstrong\u003e190 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- You can now pass generic or overloaded callables to higher-order functions and Pyrefly will preserve their structure in the return type. For example, \u003ccode\u003eidentity(identity)\u003c/code\u003e now correctly returns a generic callable instead of degrading to \u003ccode\u003eUnknown\u003c/code\u003e. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Same-scope class rebinds (like \u003ccode\u003eReal = Dummy\u003c/code\u003e after \u003ccode\u003eclass Real\u003c/code\u003e) are now checked against the original class as if it were an implicit \u003ccode\u003etype[Real]\u003c/code\u003e annotation, preventing silent type changes and fixing spurious constructor-call errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Generic classes with missing type arguments in lax mode now default to \u003ccode\u003eAny\u003c/code\u003e instead of raising variance errors, improving consistency with how we handle other incomplete types. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pydantic \u003ccode\u003efield_validator\u003c/code\u003e decorators with \u003ccode\u003emode='before'\u003c/code\u003e and \u003ccode\u003emode='plain'\u003c/code\u003e are now supported, allowing validators to accept broader input types before coercion. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Spurious unpack diagnostics are no longer emitted when the right-hand side involves \u003ccode\u003eNever\u003c/code\u003e (e.g. \u003ccode\u003ea, b, c = never()\u003c/code\u003e or \u003ccode\u003ea, b = (never(), 1)\u003c/code\u003e). The unpack solver is now \u003ccode\u003eNever\u003c/code\u003e-aware, recognizing that the producing expression cannot complete and any error message at the unpack site would be misleading. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- \u003ccode\u003eassert\u003c/code\u003e statements now check that \u003ccode\u003e__bool__\u003c/code\u003e is callable on the test expression, matching the behavior already in place for \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions (and aligning with mypy and pyright).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The language server now advertises both \u003ccode\u003esource.fixAll\u003c/code\u003e and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e code action kinds, enabling selective fix-on-save configuration across editors that implement the LSP protocol. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Document highlights now correctly distinguish between read and write references, setting \u003ccode\u003eDocumentHighlightKind::WRITE\u003c/code\u003e for assignments and declarations. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Go-to-definition on relative imports in site-packages files now correctly resolves to the package source instead of returning null when a \u003ccode\u003epyproject.toml\u003c/code\u003e exists at the project root. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Notebook cell index resolution has been fixed to prevent mismatches between code cells and markdown cells, eliminating panics and incorrect byte offset calculations in Jupyter notebooks. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Cross-module \u0026quot;find references\u0026quot; (external references) is now enabled by default, returning references across the entire project rather than just the current file. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new quick fix turns the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members into a code action that replaces the offending string literal with the proper enum member access. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003e# pyrefly: ignore\u003c/code\u003e quick fix inserts a suppression comment for the diagnostic at the cursor, automatically merging into an existing pyrefly-ignore directive on the same line or on a comment-only line above when present. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Numeric parameter defaults now preserve their source spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e, \u003ccode\u003e0xFF\u003c/code\u003e, \u003ccode\u003e0b101\u003c/code\u003e) in hover and signature display rather than being normalized to decimal. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Code actions documentation has been added to the IDE Supported Features page, covering quick fixes and \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e configuration.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eOnboarding \u0026amp; VS Code Extension\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A redesigned unconfigured-project experience: when no \u003ccode\u003epyrefly.toml\u003c/code\u003e is found, Pyrefly auto-detects nearby \u003ccode\u003emypy.ini\u003c/code\u003e, \u003ccode\u003epyrightconfig.json\u003c/code\u003e, or \u003ccode\u003e[tool.mypy]\u003c/code\u003e/\u003ccode\u003e[tool.pyright]\u003c/code\u003e sections in \u003ccode\u003epyproject.toml\u003c/code\u003e and synthesizes an in-memory configuration migrated from those settings (using the \u003ccode\u003elegacy\u003c/code\u003e or \u003ccode\u003edefault\u003c/code\u003e preset respectively). With no detectable configuration, the new \u003ccode\u003ebasic\u003c/code\u003e preset is used. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.typeCheckingMode\u003c/code\u003e workspace setting (auto / off / basic / legacy / default / strict, default \u003ccode\u003eauto\u003c/code\u003e) lets users pick a preset for files not covered by an explicit Pyrefly configuration, directly from the VS Code settings UI. The legacy \u003ccode\u003epython.pyrefly.displayTypeErrors\u003c/code\u003e setting is now deprecated, with values transparently mapped to the new model. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- A new \u003ccode\u003epython.pyrefly.disableTypeErrors\u003c/code\u003e workspace setting provides a clean per-workspace kill switch for diagnostics, independent of the type-checking mode. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The VS Code status bar has been redesigned: it now shows the active preset (e.g. \u0026quot;Pyrefly (Legacy)\u0026quot;, \u0026quot;Pyrefly (Basic)\u0026quot;) and the tooltip explains why that preset was chosen and links to the relevant docs. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- After a \u003ccode\u003epyrefly check\u003c/code\u003e on an unconfigured project, the CLI now prints a short upsell to \u003cstrong\u003estderr\u003c/strong\u003e explaining what configuration was synthesized and pointing at \u003ccode\u003epyrefly init\u003c/code\u003e. The message is routed to stderr so machine-readable stdout formats (e.g. \u003ccode\u003e--output-format json\u003c/code\u003e) remain untouched.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Configuration presets (\u003ccode\u003eoff\u003c/code\u003e, \u003ccode\u003ebasic\u003c/code\u003e, \u003ccode\u003elegacy\u003c/code\u003e, \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003estrict\u003c/code\u003e) are now available via the \u003ccode\u003epreset\u003c/code\u003e option, providing named collections of error severities and behavior settings as a base configuration that user settings can override. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003elegacy\u003c/code\u003e preset is now used by \u003ccode\u003epyrefly init\u003c/code\u003e for mypy migration, disabling checks mypy doesn't have and setting looser inference defaults. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eimplicit-any\u003c/code\u003e error code has been split into sub-kinds (\u003ccode\u003eimplicit-any-attribute\u003c/code\u003e, \u003ccode\u003eimplicit-any-empty-container\u003c/code\u003e, \u003ccode\u003eimplicit-any-parameter\u003c/code\u003e, \u003ccode\u003eimplicit-any-type-argument\u003c/code\u003e) with \u003ccode\u003eimplicit-any\u003c/code\u003e as the parent, allowing finer-grained control over where implicit \u003ccode\u003eAny\u003c/code\u003e is flagged. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003eunbound-name\u003c/code\u003e error is now disabled in the \u003ccode\u003elegacy\u003c/code\u003e preset to match mypy's default behavior, which does not flag possibly-undefined variables.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Reporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eincompatible-overload-residual\u003c/code\u003e error kind has been introduced for cases where all branches of an overloaded callable are pruned during higher-order function analysis, making it easier to configure these errors independently. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Error messages for all-pruned overload residuals now describe the incompatibility in terms of \u0026quot;solved type variables\u0026quot; rather than \u0026quot;solved type constraints\u0026quot; for better clarity. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The \u003ccode\u003epyrefly suppress\u003c/code\u003e command now correctly handles removal of unused ignores via the \u003ccode\u003e--remove-unused\u003c/code\u003e flag, which was previously broken.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eFactory Boy Support\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Pyrefly now infers the correct model return types for \u003ccode\u003ecreate()\u003c/code\u003e, \u003ccode\u003ebuild()\u003c/code\u003e, \u003ccode\u003ecreate_batch()\u003c/code\u003e, and \u003ccode\u003ebuild_batch()\u003c/code\u003e methods on \u003ccode\u003eDjangoModelFactory\u003c/code\u003e subclasses by reading the inner \u003ccode\u003eMeta.model\u003c/code\u003e attribute. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- False-positive \u003ccode\u003ebad-override\u003c/code\u003e errors on the inner \u003ccode\u003eMeta\u003c/code\u003e class in factory-boy factories are now suppressed, matching how we handle Django and Marshmallow.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The \u003ccode\u003epyrefly report\u003c/code\u003e JSON output now includes a \u003ccode\u003epath\u003c/code\u003e field on each \u003ccode\u003eModuleReport\u003c/code\u003e, for compatibility with typestats and similar tooling.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Deeply-nested dict literals no longer cause exponential memory growth during type inference. A depth-25 dict literal that previously consumed ~7.7 GB now uses ~239 MB by computing the union of field types on demand instead of storing it redundantly. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Callable residual finalization has been optimized to avoid redundant type cloning and traversals, reducing memory churn in attribute-heavy code. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Eliminated some bugs that caused Pyrefly to unnecessarily analyze dependencies, improving latency and memory use, especially in the IDE.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e15\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3057\"\u003e#3057\u003c/a\u003e: Fixed an issue where string concatenation with the \u003ccode\u003e+\u003c/code\u003e operator was incorrectly flagging \u003ccode\u003estr\u003c/code\u003e as not assignable to \u003ccode\u003eLiteralString\u003c/code\u003e attributes. Pyrefly now preserves \u003ccode\u003eLiteralString\u003c/code\u003e style when adding two explicit string literals and uses implicit style otherwise.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/105\"\u003e#105\u003c/a\u003e: Fixed premature type pinning in function calls where arguments were incorrectly narrowed before all constraints were solved. For example, \u003ccode\u003efoo(x, y)\u003c/code\u003e with \u003ccode\u003ex: int | None\u003c/code\u003e and \u003ccode\u003ey: int | None\u003c/code\u003e no longer incorrectly narrows \u003ccode\u003ex\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e when passed to a generic \u003ccode\u003efoo[T](https://github.com/facebook/pyrefly/blob/HEAD/a: T, b: T)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3198\"\u003e#3198\u003c/a\u003e: Fixed \u003ccode\u003epyrefly suppress --remove-unused\u003c/code\u003e which was not actually removing unused error suppressions. The command now correctly processes the \u003ccode\u003e--remove-unused\u003c/code\u003e flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3024\"\u003e#3024\u003c/a\u003e: The language server now advertises \u003ccode\u003esource.fixAll.pyrefly\u003c/code\u003e in addition to \u003ccode\u003esource.fixAll\u003c/code\u003e, allowing users to selectively enable or disable Pyrefly's fix-all actions in editors that support LSP code action kinds.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2819\"\u003e#2819\u003c/a\u003e: Fixed incorrect variance errors when using generic classes like Pydantic's \u003ccode\u003eRootModel\u003c/code\u003e in lax mode. Missing type arguments now degrade to \u003ccode\u003eAny\u003c/code\u003e instead of raising errors, matching our handling of other incomplete types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3000\"\u003e#3000\u003c/a\u003e: Fixed \u0026quot;find references\u0026quot; failures in Cursor and other editors caused by relative imports in site-packages not resolving correctly when a \u003ccode\u003epyproject.toml\u003c/code\u003e existed at the project root.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2563\"\u003e#2563\u003c/a\u003e: Fixed go-to-definition on relative imports in virtual environment site-packages, which was returning null because the project root's import path was matching before the more specific site-package prefix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3193\"\u003e#3193\u003c/a\u003e: Fixed an error where \u003ccode\u003elist[\u0026quot;A|B\u0026quot;]\u003c/code\u003e was incorrectly rejected as \u003ccode\u003enot-a-type\u003c/code\u003e. Type argument subscripts are now bound as type expressions even in value context, allowing forward-ref strings to be parsed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3286\"\u003e#3286\u003c/a\u003e: Fixed exponential memory blowup when type-checking deeply-nested dict literals, which could cause VSCode to be killed by the OS. Memory usage for a depth-25 dict dropped from ~7.7 GB to ~239 MB.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3261\"\u003e#3261\u003c/a\u003e: Fixed a false positive \u003ccode\u003ebad-class-definition\u003c/code\u003e when a dataclass field was assigned inside a \u003ccode\u003e@classmethod\u003c/code\u003e or \u003ccode\u003e__init_subclass__\u003c/code\u003e. Pyrefly was incorrectly extracting these as dataclass fields, even though Python's \u003ccode\u003edataclasses.dataclass\u003c/code\u003e ignores them at runtime.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2914\"\u003e#2914\u003c/a\u003e: \u003ccode\u003eassert\u003c/code\u003e statements now flag a non-callable \u003ccode\u003e__bool__\u003c/code\u003e on the test expression, closing a gap that previously only caught the issue inside \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ternary expressions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2867\"\u003e#2867\u003c/a\u003e: Fixed \u003ccode\u003eurlunparse\u003c/code\u003e being inferred as returning \u003ccode\u003eLiteral[b'']\u003c/code\u003e instead of \u003ccode\u003estr\u003c/code\u003e. The fix reworks \u003ccode\u003eas_superclass\u003c/code\u003e so tuple-like \u003ccode\u003eNamedTuple\u003c/code\u003e subclasses are upcast through their erased tuple element types, which stops \u003ccode\u003eParseResult\u003c/code\u003e from spuriously matching \u003ccode\u003eIterable[None]\u003c/code\u003e and selecting the bytes overload.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3266\"\u003e#3266\u003c/a\u003e: Added a quick fix for the existing \u0026quot;Did you mean \u003ccode\u003eFoo.BAR\u003c/code\u003e?\u0026quot; diagnostic note for missing enum members, turning the suggestion into a code action that rewrites the surrounding string literal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3230\"\u003e#3230\u003c/a\u003e: Numeric parameter defaults now preserve their original spelling (e.g. \u003ccode\u003e0o777\u003c/code\u003e) in hover and signature display rather than being normalized to a decimal value.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3302\"\u003e#3302\u003c/a\u003e: Added a \u003ccode\u003epath\u003c/code\u003e field to the \u003ccode\u003epyrefly report\u003c/code\u003e JSON \u003ccode\u003eModuleReport\u003c/code\u003e, restoring compatibility with typestats.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e63fa8d7d9160d3d319569ee2a4439883eaa4c9e\"\u003e\u003ccode\u003ee63fa8d\u003c/code\u003e\u003c/a\u003e remove extensionDependency on ms-python.python (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3326\"\u003e#3326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/15b8f817923a9b3efb8f5192a8ba1359878c3e58\"\u003e\u003ccode\u003e15b8f81\u003c/code\u003e\u003c/a\u003e abstract away python-environment from extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e267ba6974db6d041c1fe74975c08d938d8ae3d1\"\u003e\u003ccode\u003ee267ba6\u003c/code\u003e\u003c/a\u003e Fix provide_type race condition with config recheck cancellation (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3316\"\u003e#3316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fe26ba3ace3c39794b19b8220f35c56a19d0b9cf\"\u003e\u003ccode\u003efe26ba3\u003c/code\u003e\u003c/a\u003e Fix failing quick fix test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/6d9611de431d43e26d47b5e97e4499cf9a94e931\"\u003e\u003ccode\u003e6d9611d\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eFuncMetadata::def\u003c/code\u003e to reduce code duplication\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a545b3a13cac916b4d92b69ee82bb936c3432eb0\"\u003e\u003ccode\u003ea545b3a\u003c/code\u003e\u003c/a\u003e Add a more general \u003ccode\u003eFuncMetadata::def\u003c/code\u003e helper\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.62.0...0.64.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=pyrefly\u0026package-manager=pip\u0026previous-version=0.62.0\u0026new-version=0.64.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/PaketMutfak/croupier/pull/44","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PaketMutfak%2Fcroupier/issues/44","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/44/packages"}},{"old_version":"0.64.0","new_version":"0.64.1","update_type":"patch","path":null,"pr_created_at":"2026-05-11T02:37:12.000Z","version_change":"0.64.0 → 0.64.1","issue":{"uuid":"4417685284","node_id":"PR_kwDORuQ5ZM7aFphT","number":201,"state":"closed","title":"chore(deps): Bump pyrefly from 0.64.0 to 0.64.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T02:42:07.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T02:37:12.000Z","updated_at":"2026-05-11T02:42:09.000Z","time_to_close":295,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","packages":[{"name":"pyrefly","old_version":"0.64.0","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.64.0 to 0.64.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e63fa8d7d9160d3d319569ee2a4439883eaa4c9e\"\u003e\u003ccode\u003ee63fa8d\u003c/code\u003e\u003c/a\u003e remove extensionDependency on ms-python.python (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3326\"\u003e#3326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/15b8f817923a9b3efb8f5192a8ba1359878c3e58\"\u003e\u003ccode\u003e15b8f81\u003c/code\u003e\u003c/a\u003e abstract away python-environment from extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.64.0\u0026new-version=0.64.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/adamtheturtle/literalizer-cli/pull/201","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamtheturtle%2Fliteralizer-cli/issues/201","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/201/packages"}},{"old_version":"0.62.0","new_version":"0.63.1","update_type":"minor","path":null,"pr_created_at":"2026-05-10T21:06:46.000Z","version_change":"0.62.0 → 0.63.1","issue":{"uuid":"4416836759","node_id":"PR_kwDOSAiYV87aDGct","number":25,"state":"closed","title":"Bump the python-minor-and-patch group across 1 directory with 6 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-17T21:06:39.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-10T21:06:46.000Z","updated_at":"2026-05-17T21:06:41.000Z","time_to_close":604793,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-minor-and-patch","update_count":6,"packages":[{"name":"fastapi","old_version":"0.136.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"python-multipart","old_version":"0.0.26","new_version":"0.0.27","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"hypothesis","old_version":"6.152.1","new_version":"6.152.4","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"ruff","old_version":"0.15.11","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pyrefly","old_version":"0.62.0","new_version":"0.63.1","repository_url":"https://github.com/facebook/pyrefly"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.0` | `0.136.1` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.26` | `0.0.27` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.152.1` | `6.152.4` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.11` | `0.15.12` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.62.0` | `0.63.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n\n\nUpdates `fastapi` from 0.136.0 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.0...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-multipart` from 0.0.26 to 0.0.27\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/releases\"\u003epython-multipart's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.0.27\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePass parse offsets via constructors by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003eKludex/python-multipart#268\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd multipart header limits by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003eKludex/python-multipart#267\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\"\u003ehttps://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/python-multipart/blob/main/CHANGELOG.md\"\u003epython-multipart's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.27 (2026-04-27)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd multipart header limits \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/267\"\u003e#267\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePass parse offsets via constructors \u003ca href=\"https://redirect.github.com/Kludex/python-multipart/pull/268\"\u003e#268\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/6d1d6892a6b01b25da6f3e7b097e8e06c57fb250\"\u003e\u003ccode\u003e6d1d689\u003c/code\u003e\u003c/a\u003e Version 0.0.27 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/272\"\u003e#272\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/0b10220b1555af068a2bc8b198022b1ae238200f\"\u003e\u003ccode\u003e0b10220\u003c/code\u003e\u003c/a\u003e Run CI on main branch pull requests (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/271\"\u003e#271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/3e64f5f8caba0e5d391b0c1ad0f1c2edf9e8f911\"\u003e\u003ccode\u003e3e64f5f\u003c/code\u003e\u003c/a\u003e Add multipart header limits (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/267\"\u003e#267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/eb109cc4eb8174f2a7efc1ba894b1bf6425c0b14\"\u003e\u003ccode\u003eeb109cc\u003c/code\u003e\u003c/a\u003e Pass parse offsets via constructors (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/268\"\u003e#268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/78e29abb9a339598975beee093a770ec3033f76d\"\u003e\u003ccode\u003e78e29ab\u003c/code\u003e\u003c/a\u003e Bump pytest from 9.0.2 to 9.0.3 (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/266\"\u003e#266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/python-multipart/commit/b2ddd0982bdf0fe852e4f3baa12122d2827af46c\"\u003e\u003ccode\u003eb2ddd09\u003c/code\u003e\u003c/a\u003e fuzz: Enhance fuzzing capabilities with new chunked and boundary tests (\u003ca href=\"https://redirect.github.com/Kludex/python-multipart/issues/264\"\u003e#264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/python-multipart/compare/0.0.26...0.0.27\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.152.1 to 6.152.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.4\u003c/h2\u003e\n\u003cp\u003eThis patch fixes a rare internal error during \u0026quot;Phase.explain\u0026quot;\nintroduced in version 6.149.0 for certain strategies (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4708\"\u003e#4708\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-4\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.3\u003c/h2\u003e\n\u003cp\u003eThe \u0026quot;hypothesis-urandom\u0026quot; backend now reads from \u0026quot;/dev/urandom\u0026quot; with\nbuffering disabled, which improves the control of those hooking\n\u0026quot;/dev/urandom\u0026quot; to change or read Hypothesis's random decisions.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-3\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.2\u003c/h2\u003e\n\u003cp\u003eThis release further improves printing of generated values, building\non the changes in  version 6.151.11.\u003c/p\u003e\n\u003cp\u003ePrinciple changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eIn many cases where we would have printed a complex expression\nproducing a value, we now print the repr (or a pretty-printed\nversion of it).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdditionally, in some cases where we would print a complex\nexpression that involved a lambda, we are now able to simplify that\nexpression into a more readable one.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-2\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/84f92dcf29229e37f822ba3ba5eea4212d2abf35\"\u003e\u003ccode\u003e84f92dc\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.4 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c6814df503fd6afe4bf03831020572c6be44976b\"\u003e\u003ccode\u003ec6814df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4717\"\u003e#4717\u003c/a\u003e from HypothesisWorks/DRMacIver/issue4708\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/82e9446a6d7a22318a9cca8612bb35a1f404e9e1\"\u003e\u003ccode\u003e82e9446\u003c/code\u003e\u003c/a\u003e Address PR review feedback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c77d7e746f3b82ba513f8a22a1ae3bed0ecb52d8\"\u003e\u003ccode\u003ec77d7e7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4719\"\u003e#4719\u003c/a\u003e from Liam-DeVoe/fix-mobile-word-wrapping\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/609de04108945b1ee711a514c3bfa520f75b71e9\"\u003e\u003ccode\u003e609de04\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.3 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/902f1baddcbc0059eee61b3518a07489935e28ef\"\u003e\u003ccode\u003e902f1ba\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4720\"\u003e#4720\u003c/a\u003e from Liam-DeVoe/urandom-disable-buffering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/da81118e4cf06651c63ade29892fe45562a4afbc\"\u003e\u003ccode\u003eda81118\u003c/code\u003e\u003c/a\u003e claude: open /dev/urandom with buffering=0 in URandomProvider\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/4d6a7f0a37f47190694b91ba1072f069a093959f\"\u003e\u003ccode\u003e4d6a7f0\u003c/code\u003e\u003c/a\u003e fix footnote overflow on mobile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/80fada332e4a5cd19e22ac6be9f7dcfea71d9b68\"\u003e\u003ccode\u003e80fada3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4714\"\u003e#4714\u003c/a\u003e from HypothesisWorks/DRMacIver/uv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/4b554b04eec7d8ce685ec126720b562a91e04d09\"\u003e\u003ccode\u003e4b554b0\u003c/code\u003e\u003c/a\u003e Fix AssertionError in Shrinker.explain() for unstable span labels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.152.1...hypothesis-python-6.152.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.11 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.62.0 to 0.63.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.63.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.0...0.63.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.63.0...0.63.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.63.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: April 27, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.63.0 bundles \u003cstrong\u003e129 commits\u003c/strong\u003e from \u003cstrong\u003e26 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Enum member types are preserved even when the metaclass conflicts with \u003ccode\u003eEnumMeta\u003c/code\u003e, reducing noise in projects using custom metaclasses with enums. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Constrained \u003ccode\u003eTypeVar\u003c/code\u003es no longer get pinned to a specific constraint when matched against \u003ccode\u003eAny\u003c/code\u003e, preventing false positives. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Self/cls annotations on all methods and classmethods are validated to ensure they reference the defining class or a superclass, catching more annotation errors.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The LSP now reports \u003ccode\u003eunused-ignore\u003c/code\u003e diagnostics when configured to do so, helping you clean up stale suppression comments. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Completions for attribute override definitions are available in class bodies, surfacing base-class members filtered by fuzzy match. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The LSP server no longer crashes on Jupyter notebook cell URIs (\u003ccode\u003evscode-notebook-cell:\u003c/code\u003e), with full support for resolving notebook cell paths and position offsets. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Workspace symbol search uses the correct location for re-exported symbols, preventing panics on multi-byte UTF-8 characters. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Inlay hints are clickable for built-in types like \u003ccode\u003etuple\u003c/code\u003e, \u003ccode\u003edict\u003c/code\u003e, and \u003ccode\u003estr\u003c/code\u003e, enabling go-to-definition directly from hint overlays.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Messages\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting \u0026amp; Coverage\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Public symbol filtering is available via \u003ccode\u003epyrefly report --public-only\u003c/code\u003e, using cross-module tracing to report only public symbols.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- TypedDict subset checks are now cached on the Solver, reducing CPU time by ~5.3x and wall time by ~6.7x on pydantic (from 9.5s to 1.4s).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration \u0026amp; Initialization\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- \u003ccode\u003epyrefly init\u003c/code\u003e supports \u003ccode\u003e--dry-run\u003c/code\u003e for safe previews without writing files, and \u003ccode\u003e--print-config\u003c/code\u003e for machine-readable TOML output.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e9\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3099\"\u003e#3099\u003c/a\u003e: Fixed an issue where property setters and deleters inflated typable counts in \u003ccode\u003epyrefly report\u003c/code\u003e by incorrectly counting their trivial \u003ccode\u003e-\u0026gt; None\u003c/code\u003e return types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3098\"\u003e#3098\u003c/a\u003e: Fixed an issue where overloads in \u003ccode\u003epyrefly report\u003c/code\u003e were not deduplicated, causing parameters and callable signatures to be counted multiple times and inflate coverage metrics.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3067\"\u003e#3067\u003c/a\u003e: Fixed an issue where the type display path was dropping the unpack marker (\u003ccode\u003e*\u003c/code\u003e) for direct \u003ccode\u003eTypeVarTuple\u003c/code\u003e arguments, causing \u003ccode\u003eShape\u003c/code\u003e to render bare instead of \u003ccode\u003e*Shape\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3040\"\u003e#3040\u003c/a\u003e: Fixed an issue where properties on metaclasses were not taking precedence over properties on the class during class-level attribute access, causing false \u003ccode\u003ebad-assignment\u003c/code\u003e and \u003ccode\u003ebad-return\u003c/code\u003e errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3150\"\u003e#3150\u003c/a\u003e: Fixed an issue where type aliases were inflating type coverage in \u003ccode\u003epyrefly report\u003c/code\u003e by being counted as typable entities.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3041\"\u003e#3041\u003c/a\u003e: Fixed a panic during workspace/symbol requests on re-exported symbols with multi-byte UTF-8 characters, caused by using the canonical module's byte offset against the re-exporting file's buffer.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3109\"\u003e#3109\u003c/a\u003e: Added a new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint that warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type, making the conversion redundant.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3187\"\u003e#3187\u003c/a\u003e: Fixed a panic in \u003ccode\u003epyrefly report\u003c/code\u003e when \u003ccode\u003e@no_type_check\u003c/code\u003e decorator was used, caused by a missing key lookup for skipped parameter annotations.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3090\"\u003e#3090\u003c/a\u003e: Improved the unused-coroutine error message when an \u003ccode\u003eawait\u003c/code\u003e expression already has \u003ccode\u003eawait\u003c/code\u003e but produces a coroutine due to an incorrect return type annotation on the function definition.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --upgrade pyrefly==0.63.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e765bc651ba4017f8e83872c62e497054edd922d\"\u003e\u003ccode\u003ee765bc6\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/599bee32312972878756d0f54b36c161bad9598f\"\u003e\u003ccode\u003e599bee3\u003c/code\u003e\u003c/a\u003e better inlay hints docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a4ff846acb0ce215b7a15c0253f150b0a506b099\"\u003e\u003ccode\u003ea4ff846\u003c/code\u003e\u003c/a\u003e Add module uri to module tsp types (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/625877be165908162f4b875fba99daa61cb3e9cf\"\u003e\u003ccode\u003e625877b\u003c/code\u003e\u003c/a\u003e Implement multi-connection architecture (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3218\"\u003e#3218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/252c52a3f8d0cbe902eb58aee929028f9375cff6\"\u003e\u003ccode\u003e252c52a\u003c/code\u003e\u003c/a\u003e move process_event into own block\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/18bb101c9061de6f42a698bd827f6e9248de6bed\"\u003e\u003ccode\u003e18bb101\u003c/code\u003e\u003c/a\u003e factor out snapshot_changed_notification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/447f5f97e8badeff4a55e329d83fe4e67dc6ca8b\"\u003e\u003ccode\u003e447f5f9\u003c/code\u003e\u003c/a\u003e add set_experimental to server\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/84bdff6a151aec92969eea662a52cb24c1641a5b\"\u003e\u003ccode\u003e84bdff6\u003c/code\u003e\u003c/a\u003e Consolidate response helpers and extract parse_tsp_request\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/66b487bf83de7b00b0f615966c70b7ec290c4a2e\"\u003e\u003ccode\u003e66b487b\u003c/code\u003e\u003c/a\u003e Rename TspServer to TspConnection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/43ec5ac1260b56cea8c9be45548751fb949c34d6\"\u003e\u003ccode\u003e43ec5ac\u003c/code\u003e\u003c/a\u003e Add IPC transport for TSP connections (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3217\"\u003e#3217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.62.0...0.63.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\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/P4suta/mojiokoshi/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/P4suta%2Fmojiokoshi/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/packages"}},{"old_version":"0.57.1","new_version":"0.64.1","update_type":"minor","path":null,"pr_created_at":"2026-05-10T20:48:23.000Z","version_change":"0.57.1 → 0.64.1","issue":{"uuid":"4416789489","node_id":"PR_kwDORzxjSM7aC88A","number":72,"state":"closed","title":"chore(deps-dev): bump the dev group across 1 directory with 47 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-31T20:45:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-10T20:48:23.000Z","updated_at":"2026-05-31T20:45:59.000Z","time_to_close":1814254,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"dev","update_count":47,"packages":[{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"faker","old_version":"40.11.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"basedpyright","old_version":"1.38.3","new_version":"1.39.3","repository_url":"https://github.com/detachhead/basedpyright"},{"name":"ruff","old_version":"0.15.7","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"types-aiofiles","old_version":"25.1.0.20251011","new_version":"25.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"7.0.0.20260503","repository_url":"https://github.com/python/typeshed"},{"name":"types-colorama","old_version":"0.4.15.20250801","new_version":"0.4.15.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-defusedxml","old_version":"0.7.0.20250822","new_version":"0.7.0.20260504","repository_url":"https://github.com/python/typeshed"},{"name":"types-deprecated","old_version":"1.3.1.20260130","new_version":"1.3.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-docutils","old_version":"0.22.3.20260322","new_version":"0.22.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-jsonschema","old_version":"4.26.0.20260202","new_version":"4.26.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-cors","old_version":"6.0.0.20250809","new_version":"6.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-flask-migrate","old_version":"4.1.0.20250809","new_version":"4.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-gevent","old_version":"25.9.0.20260322","new_version":"26.4.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-greenlet","old_version":"3.3.0.20251206","new_version":"3.5.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-html5lib","old_version":"1.1.11.20251117","new_version":"1.1.11.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-markdown","old_version":"3.10.2.20260211","new_version":"3.10.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-oauthlib","old_version":"3.3.0.20250822","new_version":"3.3.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-objgraph","old_version":"3.6.0.20240907","new_version":"3.6.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-olefile","old_version":"0.47.0.20240806","new_version":"0.47.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-openpyxl","old_version":"3.1.5.20260322","new_version":"3.1.5.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pexpect","old_version":"4.9.0.20260127","new_version":"4.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-protobuf","old_version":"6.32.1.20260221","new_version":"7.34.1.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psutil","old_version":"7.2.2.20260130","new_version":"7.2.2.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-psycopg2","old_version":"2.9.21.20260223","new_version":"2.9.21.20260509","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pymysql","old_version":"1.1.0.20251220","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-python-dateutil","old_version":"2.9.0.20260323","new_version":"2.9.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pywin32","old_version":"311.0.0.20260323","new_version":"311.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-regex","old_version":"2026.2.28.20260301","new_version":"2026.5.9.20260510","repository_url":"https://github.com/python/typeshed"},{"name":"types-shapely","old_version":"2.1.0.20250917","new_version":"2.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-simplejson","old_version":"3.20.0.20250822","new_version":"3.20.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-six","old_version":"1.17.0.20251009","new_version":"1.17.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-tensorflow","old_version":"2.18.0.20260322","new_version":"2.18.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-tqdm","old_version":"4.67.3.20260303","new_version":"4.67.3.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"boto3-stubs","old_version":"1.42.73","new_version":"1.43.6","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"types-jmespath","old_version":"1.1.0.20260124","new_version":"1.1.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"hypothesis","old_version":"6.151.9","new_version":"6.152.5","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"types-cffi","old_version":"2.0.0.20260316","new_version":"2.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"types-setuptools","old_version":"82.0.0.20260210","new_version":"82.0.0.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"scipy-stubs","old_version":"1.17.1.3","new_version":"1.17.1.4","repository_url":"https://github.com/scipy/scipy-stubs"},{"name":"types-python-http-client","old_version":"3.3.7.20250708","new_version":"3.3.7.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"celery-types","old_version":"0.23.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"2.0.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.57.1","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dev group with 47 updates in the /api directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [faker](https://github.com/joke2k/faker) | `40.11.0` | `40.15.0` |\n| [basedpyright](https://github.com/detachhead/basedpyright) | `1.38.3` | `1.39.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.15.12` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [types-aiofiles](https://github.com/python/typeshed) | `25.1.0.20251011` | `25.1.0.20260508` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `7.0.0.20260503` |\n| [types-colorama](https://github.com/python/typeshed) | `0.4.15.20250801` | `0.4.15.20260508` |\n| [types-defusedxml](https://github.com/python/typeshed) | `0.7.0.20250822` | `0.7.0.20260504` |\n| [types-deprecated](https://github.com/python/typeshed) | `1.3.1.20260130` | `1.3.1.20260508` |\n| [types-docutils](https://github.com/python/typeshed) | `0.22.3.20260322` | `0.22.3.20260508` |\n| [types-jsonschema](https://github.com/python/typeshed) | `4.26.0.20260202` | `4.26.0.20260508` |\n| [types-flask-cors](https://github.com/python/typeshed) | `6.0.0.20250809` | `6.0.0.20260508` |\n| [types-flask-migrate](https://github.com/python/typeshed) | `4.1.0.20250809` | `4.1.0.20260508` |\n| [types-gevent](https://github.com/python/typeshed) | `25.9.0.20260322` | `26.4.0.20260508` |\n| [types-greenlet](https://github.com/python/typeshed) | `3.3.0.20251206` | `3.5.0.20260508` |\n| [types-html5lib](https://github.com/python/typeshed) | `1.1.11.20251117` | `1.1.11.20260508` |\n| [types-markdown](https://github.com/python/typeshed) | `3.10.2.20260211` | `3.10.2.20260508` |\n| [types-oauthlib](https://github.com/python/typeshed) | `3.3.0.20250822` | `3.3.0.20260508` |\n| [types-objgraph](https://github.com/python/typeshed) | `3.6.0.20240907` | `3.6.0.20260508` |\n| [types-olefile](https://github.com/python/typeshed) | `0.47.0.20240806` | `0.47.0.20260508` |\n| [types-openpyxl](https://github.com/python/typeshed) | `3.1.5.20260322` | `3.1.5.20260508` |\n| [types-pexpect](https://github.com/python/typeshed) | `4.9.0.20260127` | `4.9.0.20260508` |\n| [types-protobuf](https://github.com/python/typeshed) | `6.32.1.20260221` | `7.34.1.20260508` |\n| [types-psutil](https://github.com/python/typeshed) | `7.2.2.20260130` | `7.2.2.20260508` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260223` | `2.9.21.20260509` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260508` |\n| [types-pymysql](https://github.com/python/typeshed) | `1.1.0.20251220` | `1.1.0.20260508` |\n| [types-python-dateutil](https://github.com/python/typeshed) | `2.9.0.20260323` | `2.9.0.20260508` |\n| [types-pywin32](https://github.com/python/typeshed) | `311.0.0.20260323` | `311.0.0.20260508` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260510` |\n| [types-regex](https://github.com/python/typeshed) | `2026.2.28.20260301` | `2026.5.9.20260510` |\n| [types-shapely](https://github.com/python/typeshed) | `2.1.0.20250917` | `2.1.0.20260508` |\n| [types-simplejson](https://github.com/python/typeshed) | `3.20.0.20250822` | `3.20.0.20260508` |\n| [types-six](https://github.com/python/typeshed) | `1.17.0.20251009` | `1.17.0.20260408` |\n| [types-tensorflow](https://github.com/python/typeshed) | `2.18.0.20260322` | `2.18.0.20260508` |\n| [types-tqdm](https://github.com/python/typeshed) | `4.67.3.20260303` | `4.67.3.20260508` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.73` | `1.43.6` |\n| [types-jmespath](https://github.com/python/typeshed) | `1.1.0.20260124` | `1.1.0.20260508` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.9` | `6.152.5` |\n| [types-cffi](https://github.com/python/typeshed) | `2.0.0.20260316` | `2.0.0.20260508` |\n| [types-setuptools](https://github.com/python/typeshed) | `82.0.0.20260210` | `82.0.0.20260508` |\n| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.17.1.3` | `1.17.1.4` |\n| [types-python-http-client](https://github.com/python/typeshed) | `3.3.7.20250708` | `3.3.7.20260408` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.23.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.0.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.57.1` | `0.64.1` |\n\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.11.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.11.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `basedpyright` from 1.38.3 to 1.39.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/5f6672701c5b6a739563894256418845239be2a2\"\u003e\u003ccode\u003e5f66727\u003c/code\u003e\u003c/a\u003e 1.39.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/d8741dfc88be16e11c66cceff78e6e2634ddf49b\"\u003e\u003ccode\u003ed8741df\u003c/code\u003e\u003c/a\u003e hopefully fix docs deployment job\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ceb200c192bb53629b4c62fdc082ec27b108f316\"\u003e\u003ccode\u003eceb200c\u003c/code\u003e\u003c/a\u003e 1.39.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/eb7a92cacd2697acb4e36e2f3147333588c88fa7\"\u003e\u003ccode\u003eeb7a92c\u003c/code\u003e\u003c/a\u003e try to fix browser-basedpyright being published with nothing in it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/dec5306e9aabbce3f9b1b9ec283981d92dd43d80\"\u003e\u003ccode\u003edec5306\u003c/code\u003e\u003c/a\u003e update package-lock.json\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/6db43de5dda601e3cd83998c669c4ecbbfde26f6\"\u003e\u003ccode\u003e6db43de\u003c/code\u003e\u003c/a\u003e 1.39.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/335e48619fa223fe3be0b6560d746a10934509c8\"\u003e\u003ccode\u003e335e486\u003c/code\u003e\u003c/a\u003e fix failing tests from merge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/bbe71b686e84ebbff7699d35dab3376d411bb99d\"\u003e\u003ccode\u003ebbe71b6\u003c/code\u003e\u003c/a\u003e delete newly added github action from upstream that we don't use\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/8f2261891e8ceb278963e84658ebaf054b88e559\"\u003e\u003ccode\u003e8f22618\u003c/code\u003e\u003c/a\u003e update prettierignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DetachHead/basedpyright/commit/ff1f5a4af835b14927545c8890b303f48553acac\"\u003e\u003ccode\u003eff1f5a4\u003c/code\u003e\u003c/a\u003e fix compile errors from merge\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/detachhead/basedpyright/compare/v1.38.3...v1.39.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.7 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.7...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 9.0.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-aiofiles` from 25.1.0.20251011 to 25.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cachetools` from 6.2.0.20260317 to 7.0.0.20260503\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-colorama` from 0.4.15.20250801 to 0.4.15.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-defusedxml` from 0.7.0.20250822 to 0.7.0.20260504\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-deprecated` from 1.3.1.20260130 to 1.3.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-docutils` from 0.22.3.20260322 to 0.22.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jsonschema` from 4.26.0.20260202 to 4.26.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-cors` from 6.0.0.20250809 to 6.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-flask-migrate` from 4.1.0.20250809 to 4.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-gevent` from 25.9.0.20260322 to 26.4.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-greenlet` from 3.3.0.20251206 to 3.5.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-html5lib` from 1.1.11.20251117 to 1.1.11.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-markdown` from 3.10.2.20260211 to 3.10.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-oauthlib` from 3.3.0.20250822 to 3.3.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-objgraph` from 3.6.0.20240907 to 3.6.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-olefile` from 0.47.0.20240806 to 0.47.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-openpyxl` from 3.1.5.20260322 to 3.1.5.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pexpect` from 4.9.0.20260127 to 4.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-protobuf` from 6.32.1.20260221 to 7.34.1.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psutil` from 7.2.2.20260130 to 7.2.2.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-psycopg2` from 2.9.21.20260223 to 2.9.21.20260509\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.19.0.20251121 to 2.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pymysql` from 1.1.0.20251220 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-dateutil` from 2.9.0.20260323 to 2.9.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pywin32` from 311.0.0.20260323 to 311.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.20250915 to 6.0.12.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-regex` from 2026.2.28.20260301 to 2026.5.9.20260510\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-shapely` from 2.1.0.20250917 to 2.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-simplejson` from 3.20.0.20250822 to 3.20.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-six` from 1.17.0.20251009 to 1.17.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tensorflow` from 2.18.0.20260322 to 2.18.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-tqdm` from 4.67.3.20260303 to 4.67.3.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3-stubs` from 1.42.73 to 1.43.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003eboto3-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-jmespath` from 1.1.0.20260124 to 1.1.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.9 to 6.152.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.5\u003c/h2\u003e\n\u003cp\u003eThis patch improves the \u0026quot;Phase.explain\u0026quot; phase so that simple cases\nlike \u0026quot;assert n1 == n2\u0026quot; no longer get a misleading \u0026quot;# or any other\ngenerated value\u0026quot; comment (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4715\"\u003e#4715\u003c/a\u003e). Before falling back to random\nsampling, we now also try borrowing values from each other arg slice\nwith matching shape.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-5\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.4\u003c/h2\u003e\n\u003cp\u003eThis patch fixes a rare internal error during \u0026quot;Phase.explain\u0026quot;\nintroduced in version 6.149.0 for certain strategies (issue \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4708\"\u003e#4708\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-4\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.3\u003c/h2\u003e\n\u003cp\u003eThe \u0026quot;hypothesis-urandom\u0026quot; backend now reads from \u0026quot;/dev/urandom\u0026quot; with\nbuffering disabled, which improves the control of those hooking\n\u0026quot;/dev/urandom\u0026quot; to change or read Hypothesis's random decisions.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-3\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.2\u003c/h2\u003e\n\u003cp\u003eThis release further improves printing of generated values, building\non the changes in  version 6.151.11.\u003c/p\u003e\n\u003cp\u003ePrinciple changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eIn many cases where we would have printed a complex expression\nproducing a value, we now print the repr (or a pretty-printed\nversion of it).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdditionally, in some cases where we would print a complex\nexpression that involved a lambda, we are now able to simplify that\nexpression into a more readable one.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-2\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.1\u003c/h2\u003e\n\u003cp\u003eImprove some internal type hints.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-152-1\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eHypothesis for Python - version 6.152.0\u003c/h2\u003e\n\u003cp\u003eHypothesis generally recommends that the \u0026quot;.hypothesis\u0026quot; directory not\nbe checked into version control. As a result, Hypothesis now\nautomatically creates a \u0026quot;.gitignore\u0026quot; with \u0026quot;*\u0026quot; in the \u0026quot;.hypothesis\u0026quot;\ndirectory, which excludes it from being tracked by git.\u003c/p\u003e\n\u003cp\u003eIf you do want to check \u0026quot;.hypothesis\u0026quot; into git, you can remove the\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/5421485439466b4b35c4eb77164fde46f70929f5\"\u003e\u003ccode\u003e5421485\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.5 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/9c503ea918dd3f1c1083c669e0c6b90a2ee4dbd5\"\u003e\u003ccode\u003e9c503ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4718\"\u003e#4718\u003c/a\u003e from Zac-HD/claude/fix-issue-4715-uonex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c2368879a8b50792215d964415129ce3d2891f6b\"\u003e\u003ccode\u003ec236887\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4724\"\u003e#4724\u003c/a\u003e from HypothesisWorks/DRMacIver/fix-pyiodide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/0150df4d2f55b8e9df388054af7c79dc83a4e1f8\"\u003e\u003ccode\u003e0150df4\u003c/code\u003e\u003c/a\u003e Bump pyodide-build to 0.34.3 to fix CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c31c869dba2ba7f9becd05ebb54fc99c5482e333\"\u003e\u003ccode\u003ec31c869\u003c/code\u003e\u003c/a\u003e Document the format-before-push requirement for Claude Code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/96e8d0264844e44852cb69654b6e9de7c3742560\"\u003e\u003ccode\u003e96e8d02\u003c/code\u003e\u003c/a\u003e Simplify explain-phase candidate generation to satisfy 100% coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3582e90029bc27575c5f483f4e510214d212e0c3\"\u003e\u003ccode\u003e3582e90\u003c/code\u003e\u003c/a\u003e Apply shed formatting to test_inquisitor.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/ab0287389b661cf49a54d0cf6f79e2d32381840a\"\u003e\u003ccode\u003eab02873\u003c/code\u003e\u003c/a\u003e Try targeted candidates in explain phase before random sampling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/84f92dcf29229e37f822ba3ba5eea4212d2abf35\"\u003e\u003ccode\u003e84f92dc\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.152.4 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c6814df503fd6afe4bf03831020572c6be44976b\"\u003e\u003ccode\u003ec6814df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4717\"\u003e#4717\u003c/a\u003e from HypothesisWorks/DRMacIver/issue4708\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.9...hypothesis-python-6.152.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-cffi` from 2.0.0.20260316 to 2.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-setuptools` from 82.0.0.20260210 to 82.0.0.20260508\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scipy-stubs` from 1.17.1.3 to 1.17.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scipy/scipy-stubs/releases\"\u003escipy-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.17.1.4\u003c/h2\u003e\n\u003cp\u003eThis release targets \u003ca href=\"https://github.com/scipy/scipy/releases/tag/v1.17.1\"\u003eSciPy 1.17.1\u003c/a\u003e and supports Python 3.11-3.14, \u003ca href=\"https://github.com/numpy/numpy\"\u003eNumPy\u003c/a\u003e 1.26-2.4, and \u003ca href=\"https://github.com/jorenham/optype\"\u003eoptype\u003c/a\u003e 0.14-0.18.\u003c/p\u003e\n\u003ch1\u003e:trophy: Release Highlights\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eapprox_fprime\u003c/code\u003e and \u003ccode\u003enewton\u003c/code\u003e to accept functions returning n-D arrays in \u003ccode\u003escipy.optimize\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e✨ Improved shape-typing support for statistical testing functions in \u003ccode\u003escipy.stats\u003c/code\u003e and FFT shifting functions in \u003ccode\u003escipy.fft\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒️ Enforce \u003ca href=\"https://github.com/zizmorcore/zizmor\"\u003ezizmor\u003c/a\u003e to improve security in GitHub Actions and dependabot (guard against supply-chain attacks, cache poisoning, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e✨ Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_signal_api\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1492\"\u003escipy/scipy-stubs#1492\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: stub the private \u003ccode\u003e_delegators\u003c/code\u003e module by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1493\"\u003escipy/scipy-stubs#1493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003eks_2samp\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1494\"\u003escipy/scipy-stubs#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ebrunnermunzel\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1497\"\u003escipy/scipy-stubs#1497\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ef_oneway\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1499\"\u003escipy/scipy-stubs#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003ekruskal\u003c/code\u003e shape-typing by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1500\"\u003escipy/scipy-stubs#1500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats\u003c/code\u003e: improved \u003ccode\u003esigmaclip\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1501\"\u003escipy/scipy-stubs#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efftpack\u003c/code\u003e: improve return dtypes for real transforms by \u003ca href=\"https://github.com/Deshan-5\"\u003e\u003ccode\u003e@​Deshan-5\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1509\"\u003escipy/scipy-stubs#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esignal\u003c/code\u003e: improve \u003ccode\u003elp2{lp,hp,bp,bs}[_zpk]\u003c/code\u003e and \u003ccode\u003ebilinear_zpk\u003c/code\u003e by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1523\"\u003escipy/scipy-stubs#1523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003estats.dunnett\u003c/code\u003e: support for \u003ccode\u003elongdouble\u003c/code\u003e dtypes by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1528\"\u003escipy/scipy-stubs#1528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1532\"\u003escipy/scipy-stubs#1532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e_lib._uarray._backend\u003c/code\u003e: fix \u003ccode\u003ewrap_single_convertor[_instance]\u003c/code\u003e overloads by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1481\"\u003escipy/scipy-stubs#1481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: add vector-valued \u003ccode\u003eapprox_fprime\u003c/code\u003e overload by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1530\"\u003escipy/scipy-stubs#1530\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003e[i]fftshift\u003c/code\u003e dtype preservation for int and bool inputs by \u003ca href=\"https://github.com/Aniketsy\"\u003e\u003ccode\u003e@​Aniketsy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1533\"\u003escipy/scipy-stubs#1533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eoptimize\u003c/code\u003e: generalize \u003ccode\u003enewton\u003c/code\u003e overloads to ND arrays by \u003ca href=\"https://github.com/fbourgey\"\u003e\u003ccode\u003e@​fbourgey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1534\"\u003escipy/scipy-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e↪️ Workarounds\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esparse\u003c/code\u003e: improve CSC and CSR array/matrix constructor compatibility with mypy by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1485\"\u003escipy/scipy-stubs#1485\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📝 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd Monad to the list of downstream projects by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1498\"\u003escipy/scipy-stubs#1498\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Maintenance\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003e🔖 prepare for further development by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1480\"\u003escipy/scipy-stubs#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Update uv-build requirement from \u0026lt;0.11,\u0026gt;=0.10.9 to \u0026gt;=0.10.9,\u0026lt;0.12 in the actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1482\"\u003escipy/scipy-stubs#1482\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ ty 0.0.25 by \u003ca href=\"https://github.com/jorenham\"\u003e\u003ccode\u003e@​jorenham\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/pull/1483\"\u003escipy/scipy-stubs#1483\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/ff66e8a4a3b9fec77d32193965e4ad3d9acfea84\"\u003e\u003ccode\u003eff66e8a\u003c/code\u003e\u003c/a\u003e 🔖 scipy-stubs 1.17.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/1ba8ccfa1942dff275792fc486656e3fe12f4ee6\"\u003e\u003ccode\u003e1ba8ccf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1546\"\u003e#1546\u003c/a\u003e from scipy/fix-mypy_primer-comment-workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b4beb7de3cc744f24a0f017b81b9a58202e8e9aa\"\u003e\u003ccode\u003eb4beb7d\u003c/code\u003e\u003c/a\u003e 💚 fix mypy_primer comment workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/74945653316a671d475f06f86520f378f3c420b9\"\u003e\u003ccode\u003e7494565\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1545\"\u003e#1545\u003c/a\u003e from scipy/bump-mypy-pyrefly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/12f0735b88e3fe47860b2e4f9a5074a277e0cf50\"\u003e\u003ccode\u003e12f0735\u003c/code\u003e\u003c/a\u003e ⬆️ mypy 1.20.1 and pyrefly 0.60.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/b9efc6fb754a4be43ffd7443713f744e419951bf\"\u003e\u003ccode\u003eb9efc6f\u003c/code\u003e\u003c/a\u003e ✨ \u003ccode\u003efft\u003c/code\u003e: \u003ccode\u003efftshift\u003c/code\u003e and \u003ccode\u003eifftshift\u003c/code\u003e shape-typing support (\u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1532\"\u003e#1532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/009d10ed67d5e8d3657750bb455d7b7a2cdd8496\"\u003e\u003ccode\u003e009d10e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1544\"\u003e#1544\u003c/a\u003e from scipy/zizmor/update_dprint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cac2b4a50fcc32a7dbd68742d20fc85b05570cca\"\u003e\u003ccode\u003ecac2b4a\u003c/code\u003e\u003c/a\u003e 🔒️ fix zizmor \u003ccode\u003e--pedantic\u003c/code\u003e audits in \u003ccode\u003eupdate_dprint.yml\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/cab3222674d15ce35370a8852d541439131e6035\"\u003e\u003ccode\u003ecab3222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/scipy/scipy-stubs/issues/1543\"\u003e#1543\u003c/a\u003e from scipy/zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scipy/scipy-stubs/commit/483a2d3d7b95b5cda285ac4788ec66008e06852b\"\u003e\u003ccode\u003e483a2d3\u003c/code\u003e\u003c/a\u003e 💡 ignore zizmor error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scipy/scipy-stubs/compare/v1.17.1.3...v1.17.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-python-http-client` from 3.3.7.20250708 to 3.3.7.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.23.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.0\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.0.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. There are also changes to options and defaults.\nYou can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eEnable \u003ccode\u003e--local-partial-types\u003c/code\u003e by Default\u003c/h3\u003e\n\u003cp\u003eThis flag affects the inference of types based on assignments in other scopes.\nFor now, explicitly disabling this continues to be supported, but this support will be removed\nin the future as the legacy behaviour is hard to support with other current and future features\nin mypy, like the daemon or the new implementation of flexible redefinitions.\u003c/p\u003e\n\u003cp\u003eContributed by Ivan Levkivskyi, Jukka Lehtosalo, Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/21163\"\u003ePR 21163\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eEnable \u003ccode\u003e--strict-bytes\u003c/code\u003e by Default\u003c/h3\u003e\n\u003cp\u003ePer \u003ca href=\"https://peps.python.org/pep-0688\"\u003ePEP 688\u003c/a\u003e, mypy no longer treats \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e\nvalues as assignable to the \u003ccode\u003ebytes\u003c/code\u003e type.\u003c/p\u003e\n\u003cp\u003eContributed by Shantanu in \u003ca href=\"https://redirect.github.com/python/mypy/pull/18371\"\u003ePR 18371\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eNew Behavior for \u003ccode\u003e--allow-redefinition\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe \u003ccode\u003e--allow-redefinition\u003c/code\u003e flag now behaves like \u003ccode\u003e--allow-redefinition-new\u003c/code\u003e in mypy 1.20\nand earlier. The new behavior is generally more flexible. For example, you can have different\ntypes for a variable in different blocks:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# mypy: allow-redefinition\n\u003cp\u003edef foo(cond: bool) -\u0026gt; None:\nif cond:\nfor x in [\u0026quot;a\u0026quot;, \u0026quot;b\u0026quot;]:\n# Type of \u0026quot;x\u0026quot; is \u0026quot;str\u0026quot; here\n...\nelse:\nfor x in [1, 2]:\n# Type of \u0026quot;x\u0026quot; is \u0026quot;int\u0026quot; here\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7a765008a138ec46c579bfc6ef608860cab36033\"\u003e\u003ccode\u003e7a76500\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/5a3ab3b29f03d8baafeced3761e1afc8bd58be79\"\u003e\u003ccode\u003e5a3ab3b\u003c/code\u003e\u003c/a\u003e Changelog for mypy 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21422\"\u003e#21422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f9c86e21e88f96806c65790d604bf1264db39434\"\u003e\u003ccode\u003ef9c86e2\u003c/code\u003e\u003c/a\u003e Some changelog updates for 2.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21413\"\u003e#21413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/519eaf15e0ceafae30337083577a54c7d3f3b4fe\"\u003e\u003ccode\u003e519eaf1\u003c/code\u003e\u003c/a\u003e Bump librt to 0.10.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21415\"\u003e#21415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/158a6207d6e221cc403e1d556097b5abf5157cdd\"\u003e\u003ccode\u003e158a620\u003c/code\u003e\u003c/a\u003e Fix negative narrowing for containers (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21411\"\u003e#21411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/e556eb93a3c551a320a536879ce0a1608d14d490\"\u003e\u003ccode\u003ee556eb9\u003c/code\u003e\u003c/a\u003e Try fixing mypy mypyc wheels (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21392\"\u003e#21392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f2c97971f5f4dcd749cf87df1e1308ab5754490a\"\u003e\u003ccode\u003ef2c9797\u003c/code\u003e\u003c/a\u003e Expose --num-workers and --native-parser (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21387\"\u003e#21387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/db0cb2f7c68b0f9d43d6ee1ab68117c1550dac39\"\u003e\u003ccode\u003edb0cb2f\u003c/code\u003e\u003c/a\u003e Bump ast-serialize cache version (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21388\"\u003e#21388\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/1090ca6d476f629c566250a41204450043a47cf5\"\u003e\u003ccode\u003e1090ca6\u003c/code\u003e\u003c/a\u003e Bump ast-serialize version to 0.3.0 only (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21391\"\u003e#21391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/714ca9f2ac76e7c6dd56e26fd555f69313ba47ab\"\u003e\u003ccode\u003e714ca9f\u003c/code\u003e\u003c/a\u003e [mypyc] Add note about librt.strings thread safety (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21383\"\u003e#21383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.57.1 to 0.64.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.64.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: May 05, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.64.0 bundles \u003cstrong\u003e190 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- You can now pass generic or overloaded callables to higher-order functions and Pyrefly will preserve their structure in the return type. For example, \u003ccode\u003eidentity(identity)\u003c/code\u003e now correctly returns a generic callable instead of degrading to \u003ccode\u003eUnknown\u003c/code\u003e. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Same-scope class rebinds (like \u003ccode\u003eReal = Dummy\u003c/code\u003e after \u003ccode\u003eclass Real\u003c/code\u003e) are now checked against the original class as if it were an implicit \u003ccode\u003etype[Real]\u003c/code\u003e annotation, preventing silent type changes and fixing spurious constructor-call errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Generic classes with missing type arguments in lax mode now default to \u003ccode\u003eAny\u003c/code\u003e instead of raising variance errors, improving consistency with how we handle other incomplete types. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pydantic \u003ccode\u003efield_validator\u003c/code\u003e decorators with \u003ccode\u003emode='before'\u003c/code\u003e and \u003ccode\u003emode='plain'\u003c/code\u003e are now supported, allowing validators to accept broader input types before coercion. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Spurious unpack diagnostics are no longer emitted when the right-hand side involves \u003ccode\u003eNever\u003c/code\u003e (e.g. \u003ccode\u003ea, b, c = never()\u003c/code\u003e or \u003ccode\u003ea, b = (never(), 1)\u003c/code\u003e). The unpack solver is now \u003ccode\u003eNever\u003c/code\u003e-aware, recognizing that the producing expression cannot complete and any error message at the unpack site would be misleading. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- \u003ccode\u003eassert\u003c/code\u003e statements now check that \u003ccode\u003e__bool__\u003c/code\u003e is callable on the test expression, matching the behavior already in place for \u003ccode\u003eif\u003c/code\u003e, \u003ccode\u003ewhile\u003c/code\u003e, and ...\n\n_Description has been truncated_","html_url":"https://github.com/Lraviv/dify-transfer/pull/72","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lraviv%2Fdify-transfer/issues/72","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/72/packages"}},{"old_version":"0.64.0","new_version":"0.64.1","update_type":"patch","path":null,"pr_created_at":"2026-05-08T22:25:44.000Z","version_change":"0.64.0 → 0.64.1","issue":{"uuid":"4409771685","node_id":"PR_kwDODM87vM7ZtOzh","number":2190,"state":"closed","title":"chore(deps): Bump pyrefly from 0.64.0 to 0.64.1","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-08T22:29:15.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-08T22:25:44.000Z","updated_at":"2026-05-08T22:29:17.000Z","time_to_close":211,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","packages":[{"name":"pyrefly","old_version":"0.64.0","new_version":"0.64.1","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.64.0 to 0.64.1.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.64.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.64.0...0.64.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/71ff2a5cbc7ce9a82e758174fe25274256728c28\"\u003e\u003ccode\u003e71ff2a5\u003c/code\u003e\u003c/a\u003e upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b3d41027a20764fd076c7af89d9dbb45e64dd458\"\u003e\u003ccode\u003eb3d4102\u003c/code\u003e\u003c/a\u003e Strip debuginfo from release binaries to reduce binary size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/ccb904d47281c22195839bcc714eb1c38256e690\"\u003e\u003ccode\u003eccb904d\u003c/code\u003e\u003c/a\u003e Fix Pyrefly regression with imported TypeVars via attribute access (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3333\"\u003e#3333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fb2ef608a2bb9b896a0232be0783338eea3b028a\"\u003e\u003ccode\u003efb2ef60\u003c/code\u003e\u003c/a\u003e support vscode-python-environments extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3327\"\u003e#3327\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e63fa8d7d9160d3d319569ee2a4439883eaa4c9e\"\u003e\u003ccode\u003ee63fa8d\u003c/code\u003e\u003c/a\u003e remove extensionDependency on ms-python.python (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3326\"\u003e#3326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/15b8f817923a9b3efb8f5192a8ba1359878c3e58\"\u003e\u003ccode\u003e15b8f81\u003c/code\u003e\u003c/a\u003e abstract away python-environment from extension (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3325\"\u003e#3325\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.64.0...0.64.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.64.0\u0026new-version=0.64.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/VWS-Python/vws-cli/pull/2190","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/VWS-Python%2Fvws-cli/issues/2190","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2190/packages"}},{"old_version":"0.59.0","new_version":"0.63.1","update_type":"minor","path":null,"pr_created_at":"2026-05-06T06:10:38.000Z","version_change":"0.59.0 → 0.63.1","issue":{"uuid":"4389158807","node_id":"PR_kwDOSC4igc7Yps0T","number":29,"state":"closed","title":"Chore(deps): Bump the utilities-minor group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","backend","non-trivial"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-13T06:08:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-06T06:10:38.000Z","updated_at":"2026-05-13T06:08:24.000Z","time_to_close":604664,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-minor","update_count":12,"packages":[{"name":"django-treenode","old_version":"0.23.3","new_version":"0.24.0","repository_url":"https://github.com/fabiocaccamo/django-treenode"},{"name":"drf-spectacular-sidecar","old_version":"2026.4.1","new_version":"2026.5.1","repository_url":"https://github.com/tfranzel/drf-spectacular-sidecar"},{"name":"filelock","old_version":"3.25.2","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"imap-tools","old_version":"1.11.1","new_version":"1.12.1","repository_url":"https://github.com/ikvk/imap_tools"},{"name":"openai","old_version":"2.30.0","new_version":"2.34.0","repository_url":"https://github.com/openai/openai-python"},{"name":"regex","old_version":"2026.3.32","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"sentence-transformers","old_version":"5.3.0","new_version":"5.4.1","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"tantivy","old_version":"0.25.1","new_version":"0.26.0"},{"name":"faker","old_version":"40.12.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"pyrefly","old_version":"0.59.0","new_version":"0.63.1","repository_url":"https://github.com/facebook/pyrefly"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pytz","old_version":"2026.1.1.20260304","new_version":"2026.2.0.20260506","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-minor group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-treenode](https://github.com/fabiocaccamo/django-treenode) | `0.23.3` | `0.24.0` |\n| [drf-spectacular-sidecar](https://github.com/tfranzel/drf-spectacular-sidecar) | `2026.4.1` | `2026.5.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.25.2` | `3.29.0` |\n| [imap-tools](https://github.com/ikvk/imap_tools) | `1.11.1` | `1.12.1` |\n| [openai](https://github.com/openai/openai-python) | `2.30.0` | `2.34.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.3.32` | `2026.4.4` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.3.0` | `5.4.1` |\n| tantivy | `0.25.1` | `0.26.0` |\n| [faker](https://github.com/joke2k/faker) | `40.12.0` | `40.15.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.59.0` | `0.63.1` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n| [types-pytz](https://github.com/python/typeshed) | `2026.1.1.20260304` | `2026.2.0.20260506` |\n\n\nUpdates `django-treenode` from 0.23.3 to 0.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fabiocaccamo/django-treenode/releases\"\u003edjango-treenode's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.24.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ePython 3.14\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDjango 6.0\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eFix skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump test requirements.\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\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/fabiocaccamo/django-treenode/blob/main/CHANGELOG.md\"\u003edjango-treenode's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/releases/tag/0.24.0\"\u003e0.24.0\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ePython 3.14\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDjango 6.0\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eFix skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump test requirements.\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\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/fabiocaccamo/django-treenode/commit/c5afb6cb48d81b4a0d0b8279666e22a6c4f91624\"\u003e\u003ccode\u003ec5afb6c\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003eCHANGELOG\u003c/code\u003e and version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/246de2cfad245d2386617d54dc843ae91c6edb41\"\u003e\u003ccode\u003e246de2c\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/536d7504b02b560c95ec914bf09dffacee8939c0\"\u003e\u003ccode\u003e536d750\u003c/code\u003e\u003c/a\u003e Update tox requirement in the python-requirements group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/214\"\u003e#214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/2c835fb06aacf6fddbe5a64cfcd789b9a40c4b5e\"\u003e\u003ccode\u003e2c835fb\u003c/code\u003e\u003c/a\u003e fix: skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/452bbd165ae9280823394f830f719808e92b6857\"\u003e\u003ccode\u003e452bbd1\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/85f10b447a101f5fe2d9110ec2ccd48da901cf81\"\u003e\u003ccode\u003e85f10b4\u003c/code\u003e\u003c/a\u003e Update coverage requirement in the python-requirements group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/8f71467fddd9db697dec018d4bb97d716e506c37\"\u003e\u003ccode\u003e8f71467\u003c/code\u003e\u003c/a\u003e Update pre-commit hooks. (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/2a572e30696820cd416d6c71c4d925f8638dae36\"\u003e\u003ccode\u003e2a572e3\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request in the github-actions group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/a13fc25c5c70d451f7312ad0879c08c9dca3f074\"\u003e\u003ccode\u003ea13fc25\u003c/code\u003e\u003c/a\u003e Update .pre-commit-config.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/16b84e0350ac6583da522436312bf45d37b9f6f2\"\u003e\u003ccode\u003e16b84e0\u003c/code\u003e\u003c/a\u003e Update FUNDING.yml\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fabiocaccamo/django-treenode/compare/0.23.3...0.24.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular-sidecar` from 2026.4.1 to 2026.5.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/c55ef4d0685114b7cd563485af9c1859f7d0f29b\"\u003e\u003ccode\u003ec55ef4d\u003c/code\u003e\u003c/a\u003e version bump 2026.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/05fbf42eca0a97579a884c5264a0e146673d985c\"\u003e\u003ccode\u003e05fbf42\u003c/code\u003e\u003c/a\u003e version bump 2026.4.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/4ca03e1f015837694091dd3698f4ef6cd8ecf45d\"\u003e\u003ccode\u003e4ca03e1\u003c/code\u003e\u003c/a\u003e Force rebuild for redoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/ab433ec2a85576947809c9039b62c966d5452694\"\u003e\u003ccode\u003eab433ec\u003c/code\u003e\u003c/a\u003e Merge branch 'pr16'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/f14ea06d1572efe0c840cba36570cf866f6fb069\"\u003e\u003ccode\u003ef14ea06\u003c/code\u003e\u003c/a\u003e update github actions due to deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/50ef330d14f39d5221ae30aa3aa4b9b408e10df3\"\u003e\u003ccode\u003e50ef330\u003c/code\u003e\u003c/a\u003e Fix redoc files \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular-sidecar/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/63be86409f10222db354b736811f877238a68a26\"\u003e\u003ccode\u003e63be864\u003c/code\u003e\u003c/a\u003e Fix: update assets list\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/compare/2026.4.1...2026.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.25.2 to 3.29.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.29.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(async): use single-thread executor for lock consistency by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/533\"\u003etox-dev/filelock#533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): enable stale lock detection on Windows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/534\"\u003etox-dev/filelock#534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.28.0...3.29.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.28.0...3.29.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.28.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/529\"\u003etox-dev/filelock#529\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.27.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/528\"\u003etox-dev/filelock#528\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling by \u003ca href=\"https://github.com/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/517\"\u003etox-dev/filelock#517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 fix(ci): restore git credentials for release job by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/520\"\u003etox-dev/filelock#520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/524\"\u003etox-dev/filelock#524\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.25.2...3.26.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.25.2...3.26.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e3.29.0 (2026-04-19)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): enable stale lock detection on Windows :pr:\u003ccode\u003e534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(async): use single-thread executor for lock consistency :pr:\u003ccode\u003e533\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 :pr:\u003ccode\u003e530\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.28.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again :pr:\u003ccode\u003e529\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.1 (2026-04-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling :pr:\u003ccode\u003e518\u003c/code\u003e - by :user:\u003ccode\u003enaarob\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 :pr:\u003ccode\u003e525\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.0 (2026-04-06)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking :pr:\u003ccode\u003e524\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e523\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 :pr:\u003ccode\u003e522\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove persist-credentials: false from release job :pr:\u003ccode\u003e520\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e519\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing :pr:\u003ccode\u003e517\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e516\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e514\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.2 (2026-03-11)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(unix): suppress EIO on close in Docker bind mounts :pr:\u003ccode\u003e513\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.1 (2026-03-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e510\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(win): restore best-effort lock file cleanup on release :pr:\u003ccode\u003e511\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/469b47f192b0a9f8c8b795d9b9f57212c716959b\"\u003e\u003ccode\u003e469b47f\u003c/code\u003e\u003c/a\u003e Release 3.29.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/e85d07281987e0855ba67c03dfdef342ec1097d5\"\u003e\u003ccode\u003ee85d072\u003c/code\u003e\u003c/a\u003e ✨ feat(soft): enable stale lock detection on Windows (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/534\"\u003e#534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f5ee1712ced6916b2768812ee378183319339944\"\u003e\u003ccode\u003ef5ee171\u003c/code\u003e\u003c/a\u003e 🐛 fix(async): use single-thread executor for lock consistency (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/533\"\u003e#533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/2a954588cdf462a786835eeb102240ce79fecc8b\"\u003e\u003ccode\u003e2a95458\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/55de20c0819652362881906fa289feff5a323c19\"\u003e\u003ccode\u003e55de20c\u003c/code\u003e\u003c/a\u003e Release 3.28.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/476b0e4a92776fe530b5d993247342f039004174\"\u003e\u003ccode\u003e476b0e4\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): unbreak release workflow, publish to PyPI again (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/824713edc32b54efd66566907f97c1238502810e\"\u003e\u003ccode\u003e824713e\u003c/code\u003e\u003c/a\u003e ✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/528\"\u003e#528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/9879de9298db93ffba0a9f58d9de75e9e2a00fc1\"\u003e\u003ccode\u003e9879de9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/527\"\u003e#527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4cfab498b6916f89be46152efa4a72e9731be98f\"\u003e\u003ccode\u003e4cfab49\u003c/code\u003e\u003c/a\u003e Release 3.26.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/734c9f26e8107ad24886129fc68865f0b46cf71f\"\u003e\u003ccode\u003e734c9f2\u003c/code\u003e\u003c/a\u003e 🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handli...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.25.2...3.29.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imap-tools` from 1.11.1 to 1.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ikvk/imap_tools/releases\"\u003eimap-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.12.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: BaseMailBox.login now quotes username to handle special IMAP characters (e.g. \u003ccode\u003e*\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/blob/master/docs/release_notes.rst\"\u003eimap-tools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.12.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: BaseMailBox.login now quotes username to handle special IMAP characters (e.g. \u003ccode\u003e*\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.12.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/commit/4ff405b742191ec5ab360ce5b8efb6aeb6786075\"\u003e\u003ccode\u003e4ff405b\u003c/code\u003e\u003c/a\u003e vers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/6443dd61f6c66bec21078ad79020d7fc456a30ba\"\u003e\u003ccode\u003e6443dd6\u003c/code\u003e\u003c/a\u003e Fixes the username quoting when using login with a username containing charac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/74083c4d31e94d9f0b5a0504c8a27f7a1525fd5d\"\u003e\u003ccode\u003e74083c4\u003c/code\u003e\u003c/a\u003e doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/4db25623a72277bf02480757fb28f21fc01addd6\"\u003e\u003ccode\u003e4db2562\u003c/code\u003e\u003c/a\u003e doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/c59a60723b7e6fec353590811ec6ad674110031c\"\u003e\u003ccode\u003ec59a607\u003c/code\u003e\u003c/a\u003e MailMessage.headers - LazyHeaders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/32ddf22fcac2fc80c7ed9ce0a6719d020c9ff57f\"\u003e\u003ccode\u003e32ddf22\u003c/code\u003e\u003c/a\u003e MailMessage.headers docs\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ikvk/imap_tools/compare/v1.11.1...v1.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openai` from 2.30.0 to 2.34.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.33.0...v2.34.0\"\u003ev2.33.0...v2.34.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add external_key_id to projects, email/metadata params to users, update types (\u003ca href=\"https://github.com/openai/openai-python/commit/2d232eebb2fe021bb21f2576b17d1d588f81a608\"\u003e2d232ee\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Admin API Keys per endpoint (\u003ca href=\"https://github.com/openai/openai-python/commit/b8b176af84172f27d2fde8dca062ca4c41f94bf7\"\u003eb8b176a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e admin API updates (\u003ca href=\"https://github.com/openai/openai-python/commit/4ae1138ae1f76e81a2267e4deb45b435c10774d5\"\u003e4ae1138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/c1870f1b881bb914e4e62a6c8b08d4c2b9a6fd54\"\u003ec1870f1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/f6bb9c7d7bdcc45425d37722358bed097e83d493\"\u003ef6bb9c7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport setting headers via env (\u003ca href=\"https://github.com/openai/openai-python/commit/1e89d8b56aba12f99a8ef2b1b78fdee84751275a\"\u003e1e89d8b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eallow explicit Azure auth headers (\u003ca href=\"https://github.com/openai/openai-python/commit/a0626babf0548fb03cf3c2d054da116dd6466701\"\u003ea0626ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e correct prompt_cache_retention enum value from in-memory to in_memory (\u003ca href=\"https://github.com/openai/openai-python/commit/d47d9f0f79c612c4d14005a0a3cf44e1968c9bff\"\u003ed47d9f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e preserve python api key attribute type (\u003ca href=\"https://github.com/openai/openai-python/commit/62607f61c542ed559ef114849e31307c0c290286\"\u003e62607f6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e resolve python auth type checks (\u003ca href=\"https://github.com/openai/openai-python/commit/42a31a7efb6784633108c1a73e1779ed79ab8bed\"\u003e42a31a7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e support admin api key auth (\u003ca href=\"https://github.com/openai/openai-python/commit/f029eb937f976110c1a67b9342525a38a214072e\"\u003ef029eb9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eavoid bearer fallback for admin auth (\u003ca href=\"https://github.com/openai/openai-python/commit/22e01a8cf791a143ecc576f46de50eee9b3c2147\"\u003e22e01a8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epreserve selected auth credentials (\u003ca href=\"https://github.com/openai/openai-python/commit/0d27f9dbd3b2ae82b2e8c2eeb9e7e78f3edecdf1\"\u003e0d27f9d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erequire bearer auth for stream helpers (\u003ca href=\"https://github.com/openai/openai-python/commit/d0555390bcf4a704c10d318c7de2fe006750c3d0\"\u003ed055539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e correct created_at and completed_at to float in Response (\u003ca href=\"https://github.com/openai/openai-python/commit/7da4b88c1985028f7ee9a98b919e71f863f979f0\"\u003e7da4b88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e correct timestamp types to int in Response model (\u003ca href=\"https://github.com/openai/openai-python/commit/e55631c868b1d0b720fda0abdbc342787cd95e2c\"\u003ee55631c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse correct field name format for multipart file arrays (\u003ca href=\"https://github.com/openai/openai-python/commit/9ee482576c2bd6b33b6cf7458c37ab2e7d5bc725\"\u003e9ee4825\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e optimize file structure copying in multipart requests (\u003ca href=\"https://github.com/openai/openai-python/commit/dca474e5beac7cc8e05855f042c3227843030c1b\"\u003edca474e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e more robust bootstrap script (\u003ca href=\"https://github.com/openai/openai-python/commit/9ec1600d48fda10abb144b2a62d07c5abd7e9ab1\"\u003e9ec1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e reformat pyproject.toml (\u003ca href=\"https://github.com/openai/openai-python/commit/12ad57b8da5b5c0615641af273d4bbf2981d6bf7\"\u003e12ad57b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.22.1 (\u003ca href=\"https://github.com/openai/openai-python/commit/486dfedfec8484bb00318b0ea798c2260f7a720c\"\u003e486dfed\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add rate limit and vector store info to files create (\u003ca href=\"https://github.com/openai/openai-python/commit/4f776df78d757fdbf25662c4be98b5c98183aaaf\"\u003e4f776df\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update files rate limit documentation (\u003ca href=\"https://github.com/openai/openai-python/commit/b141a20e948b5af3b8fbe4261798c191d2857b4a\"\u003eb141a20\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.33.0\u003c/h2\u003e\n\u003ch2\u003e2.33.0 (2026-04-28)\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/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.0 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.33.0...v2.34.0\"\u003ev2.33.0...v2.34.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add external_key_id to projects, email/metadata params to users, update types (\u003ca href=\"https://github.com/openai/openai-python/commit/2d232eebb2fe021bb21f2576b17d1d588f81a608\"\u003e2d232ee\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Admin API Keys per endpoint (\u003ca href=\"https://github.com/openai/openai-python/commit/b8b176af84172f27d2fde8dca062ca4c41f94bf7\"\u003eb8b176a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e admin API updates (\u003ca href=\"https://github.com/openai/openai-python/commit/4ae1138ae1f76e81a2267e4deb45b435c10774d5\"\u003e4ae1138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/c1870f1b881bb914e4e62a6c8b08d4c2b9a6fd54\"\u003ec1870f1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/f6bb9c7d7bdcc45425d37722358bed097e83d493\"\u003ef6bb9c7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport setting headers via env (\u003ca href=\"https://github.com/openai/openai-python/commit/1e89d8b56aba12f99a8ef2b1b78fdee84751275a\"\u003e1e89d8b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eallow explicit Azure auth headers (\u003ca href=\"https://github.com/openai/openai-python/commit/a0626babf0548fb03cf3c2d054da116dd6466701\"\u003ea0626ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e correct prompt_cache_retention enum value from in-memory to in_memory (\u003ca href=\"https://github.com/openai/openai-python/commit/d47d9f0f79c612c4d14005a0a3cf44e1968c9bff\"\u003ed47d9f0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e preserve python api key attribute type (\u003ca href=\"https://github.com/openai/openai-python/commit/62607f61c542ed559ef114849e31307c0c290286\"\u003e62607f6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e resolve python auth type checks (\u003ca href=\"https://github.com/openai/openai-python/commit/42a31a7efb6784633108c1a73e1779ed79ab8bed\"\u003e42a31a7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e support admin api key auth (\u003ca href=\"https://github.com/openai/openai-python/commit/f029eb937f976110c1a67b9342525a38a214072e\"\u003ef029eb9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eavoid bearer fallback for admin auth (\u003ca href=\"https://github.com/openai/openai-python/commit/22e01a8cf791a143ecc576f46de50eee9b3c2147\"\u003e22e01a8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epreserve selected auth credentials (\u003ca href=\"https://github.com/openai/openai-python/commit/0d27f9dbd3b2ae82b2e8c2eeb9e7e78f3edecdf1\"\u003e0d27f9d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erequire bearer auth for stream helpers (\u003ca href=\"https://github.com/openai/openai-python/commit/d0555390bcf4a704c10d318c7de2fe006750c3d0\"\u003ed055539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e correct created_at and completed_at to float in Response (\u003ca href=\"https://github.com/openai/openai-python/commit/7da4b88c1985028f7ee9a98b919e71f863f979f0\"\u003e7da4b88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e correct timestamp types to int in Response model (\u003ca href=\"https://github.com/openai/openai-python/commit/e55631c868b1d0b720fda0abdbc342787cd95e2c\"\u003ee55631c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse correct field name format for multipart file arrays (\u003ca href=\"https://github.com/openai/openai-python/commit/9ee482576c2bd6b33b6cf7458c37ab2e7d5bc725\"\u003e9ee4825\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e optimize file structure copying in multipart requests (\u003ca href=\"https://github.com/openai/openai-python/commit/dca474e5beac7cc8e05855f042c3227843030c1b\"\u003edca474e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e more robust bootstrap script (\u003ca href=\"https://github.com/openai/openai-python/commit/9ec1600d48fda10abb144b2a62d07c5abd7e9ab1\"\u003e9ec1600\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e reformat pyproject.toml (\u003ca href=\"https://github.com/openai/openai-python/commit/12ad57b8da5b5c0615641af273d4bbf2981d6bf7\"\u003e12ad57b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.22.1 (\u003ca href=\"https://github.com/openai/openai-python/commit/486dfedfec8484bb00318b0ea798c2260f7a720c\"\u003e486dfed\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add rate limit and vector store info to files create (\u003ca href=\"https://github.com/openai/openai-python/commit/4f776df78d757fdbf25662c4be98b5c98183aaaf\"\u003e4f776df\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update files rate limit documentation (\u003ca href=\"https://github.com/openai/openai-python/commit/b141a20e948b5af3b8fbe4261798c191d2857b4a\"\u003eb141a20\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.33.0 (2026-04-28)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.32.0...v2.33.0\"\u003ev2.32.0...v2.33.0\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/9370977d155464e499de2ac05ee3e99fcd694fa3\"\u003e\u003ccode\u003e9370977\u003c/code\u003e\u003c/a\u003e release: 2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/529e3b746c5c1bf562eba6e37f8a30eab2a0106b\"\u003e\u003ccode\u003e529e3b7\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/8428b0f2cf64f3d9a8ce188823e034ee35eac110\"\u003e\u003ccode\u003e8428b0f\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/a4c01ec71e19af034af09ab6fa00bac693f8d66a\"\u003e\u003ccode\u003ea4c01ec\u003c/code\u003e\u003c/a\u003e feat(api): add external_key_id to projects, email/metadata params to users, u...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/b1417cc7702af9b9edf0519d03bd3d780ecf5047\"\u003e\u003ccode\u003eb1417cc\u003c/code\u003e\u003c/a\u003e feat(api): admin API updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/d05f3a875fc78519711067350605d6226aed33b8\"\u003e\u003ccode\u003ed05f3a8\u003c/code\u003e\u003c/a\u003e feat(api): manual updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/42b2b60af44566ce3d1d6d37f2bb9d77274e65dd\"\u003e\u003ccode\u003e42b2b60\u003c/code\u003e\u003c/a\u003e fix(types): correct created_at and completed_at to float in Response\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/15a9e05ada36a126f3ad9fab0eada8ad62b8389c\"\u003e\u003ccode\u003e15a9e05\u003c/code\u003e\u003c/a\u003e fix: allow explicit Azure auth headers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/9e4efd13bca6730d150cffba12151cc7c5f0e70a\"\u003e\u003ccode\u003e9e4efd1\u003c/code\u003e\u003c/a\u003e fix: avoid bearer fallback for admin auth\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c99535c716f90a1e10cc40a8618103ba1c5c2e49\"\u003e\u003ccode\u003ec99535c\u003c/code\u003e\u003c/a\u003e fix: preserve selected auth credentials\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.30.0...v2.34.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `regex` from 2026.3.32 to 2026.4.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/bc57b04b00de68590345ac2eb621b9a8dd222d7d\"\u003e\u003ccode\u003ebc57b04\u003c/code\u003e\u003c/a\u003e A fix for older Python versions before free-threading was  supported.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/773e213b5d7a78806e795d2513a37345dc793e97\"\u003e\u003ccode\u003e773e213\u003c/code\u003e\u003c/a\u003e More fixes for free-threading.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.3.32...2026.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentence-transformers` from 5.3.0 to 5.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/sentence-transformers/releases\"\u003esentence-transformers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.4.1 - Numpy string arrays\u003c/h2\u003e\n\u003cp\u003eThis patch release allows \u003ccode\u003eencode()\u003c/code\u003e and \u003ccode\u003epredict()\u003c/code\u003e to accept 1D numpy string arrays as inputs.\u003c/p\u003e\n\u003cp\u003eInstall this version with\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003e# Training + Inference\r\npip install sentence-transformers[train]==5.4.1\r\n\u003ch1\u003eInference only, use one of:\u003c/h1\u003e\n\u003cp\u003epip install sentence-transformers==5.4.1\npip install sentence-transformers[onnx-gpu]==5.4.1\npip install sentence-transformers[onnx]==5.4.1\npip install sentence-transformers[openvino]==5.4.1\u003c/p\u003e\n\u003ch1\u003eMultimodal dependencies (optional):\u003c/h1\u003e\n\u003cp\u003epip install sentence-transformers[image]==5.4.1\npip install sentence-transformers[audio]==5.4.1\npip install sentence-transformers[video]==5.4.1\u003c/p\u003e\n\u003ch1\u003eOr combine as needed:\u003c/h1\u003e\n\u003cp\u003epip install sentence-transformers[train,onnx,image]==5.4.1\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch2\u003eNumpy string/object arrays as batches (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3720\"\u003e#3720\u003c/a\u003e)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eencode()\u003c/code\u003e and \u003ccode\u003epredict()\u003c/code\u003e now correctly recognize 1D numpy string/object arrays as batches rather than singular inputs. Previously, something like \u003ccode\u003emodel.encode(df[\u0026quot;text\u0026quot;].to_numpy())\u003c/code\u003e was silently treated as a single input and produced incorrect output. 1D numpy arrays with \u003ccode\u003edtype.kind\u003c/code\u003e in \u003ccode\u003e(\u0026quot;U\u0026quot;, \u0026quot;O\u0026quot;)\u003c/code\u003e are now unpacked like lists, and 2D+ arrays are treated as batches of pairs (for \u003ccode\u003eCrossEncoder\u003c/code\u003e).\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport numpy as np\r\nfrom sentence_transformers import SentenceTransformer\r\n\u003cp\u003emodel = SentenceTransformer(\u0026quot;all-MiniLM-L6-v2\u0026quot;)\u003c/p\u003e\n\u003ch1\u003ePreviously treated as one input; now correctly encoded as 3 separate texts\u003c/h1\u003e\n\u003cp\u003eembeddings = model.encode(np.array([\u0026quot;first\u0026quot;, \u0026quot;second\u0026quot;, \u0026quot;third\u0026quot;]))\nprint(embeddings.shape)\u003c/p\u003e\n\u003ch1\u003e(3, 384)\u003c/h1\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eFor \u003ccode\u003eCrossEncoder\u003c/code\u003e, a 1D numpy string array is still treated as a single \u003ccode\u003e[query, document]\u003c/code\u003e pair to match the existing list behavior, while a 2D array of shape \u003ccode\u003e(N, 2)\u003c/code\u003e is a batch of \u003ccode\u003eN\u003c/code\u003e pairs.\u003c/p\u003e\n\u003ch2\u003eSafer activation function loading in \u003ccode\u003eDense\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3714\"\u003e#3714\u003c/a\u003e)\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003eDense\u003c/code\u003e module stores its activation function as a dotted import path in its saved config (e.g. \u003ccode\u003e\u0026quot;torch.nn.modules.activation.Tanh\u0026quot;\u003c/code\u003e), which was then resolved via \u003ccode\u003eimport_from_string\u003c/code\u003e whenever the module was loaded. Because any importable Python callable could be referenced, a maliciously crafted \u003ccode\u003econfig.json\u003c/code\u003e on the Hub could trigger arbitrary imports at model load time.\u003c/p\u003e\n\u003cp\u003eThe loader now only resolves activation functions whose import path starts with \u003ccode\u003etorch.\u003c/code\u003e. Anything else is skipped with a warning and replaced by the default activation (\u003ccode\u003eTanh\u003c/code\u003e). To load a model with a custom (non-torch) activation function, opt in explicitly with \u003ccode\u003etrust_remote_code=True\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom sentence_transformers import SentenceTransformer\r\n\u003cp\u003e\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/6dc2cb57e5c680275e9e5fbf62bba0351f124385\"\u003e\u003ccode\u003e6dc2cb5\u003c/code\u003e\u003c/a\u003e Release v5.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/a6a371caa4eaeec980a224d66d53abaf5fb30f9c\"\u003e\u003ccode\u003ea6a371c\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into v5.4-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/c500af50eb597aba2523024d98a842cde064c3fe\"\u003e\u003ccode\u003ec500af5\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003efix\u003c/code\u003e] Treat numpy string/object arrays as batches in encode/predict (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/25f0694290dbee841e39343551e82799e34648e6\"\u003e\u003ccode\u003e25f0694\u003c/code\u003e\u003c/a\u003e Only load activation functions starting with 'torch' in the Dense module (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3714\"\u003e#3714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/9140444351440b54da35622b38484fcfb1f4d437\"\u003e\u003ccode\u003e9140444\u003c/code\u003e\u003c/a\u003e Replace evaluation_strategy with eval_strategy in a few more places (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3713\"\u003e#3713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/cec9077572ca34c207bb5709463b33a31b6a2744\"\u003e\u003ccode\u003ecec9077\u003c/code\u003e\u003c/a\u003e No revision needed anymore for nvidia nemotron (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3712\"\u003e#3712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/5035ccd4fca1ac6cff3db0601ba8b888934e9b63\"\u003e\u003ccode\u003e5035ccd\u003c/code\u003e\u003c/a\u003e No revision needed anymore for nvidia nemotron (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3712\"\u003e#3712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/abca5aa6150d24f25746036fc3050c4673e201c0\"\u003e\u003ccode\u003eabca5aa\u003c/code\u003e\u003c/a\u003e Increment dev version after v5.4 release (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3711\"\u003e#3711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/d36232b82bc1e81f9088f85c5f6c044bf1ff5a57\"\u003e\u003ccode\u003ed36232b\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003etests\u003c/code\u003e] Fix test_trainer_prompts for SE and ST after prompt handling moved ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/fe9361218c10b2ee18f497d73863788a6b592210\"\u003e\u003ccode\u003efe93612\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into v5.4-release\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/sentence-transformers/compare/v5.3.0...v5.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tantivy` from 0.25.1 to 0.26.0\n\nUpdates `faker` from 40.12.0 to 40.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.15.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.15.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.14.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.13.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.1...v40.15.0\"\u003ev40.15.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd job providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd company providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd geo providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd currency providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edate_time\u003c/code\u003e provider for \u003ccode\u003ear_DZ\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd ssn providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.14.0...v40.14.1\"\u003ev40.14.1 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eUnicodeEncodeError\u003c/code\u003e in CLI docs on non-UTF consoles (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2362\"\u003e#2362\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.13.0...v40.14.0\"\u003ev40.14.0 - 2026-04-17\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: update placekitten URL to placekittens (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2364\"\u003e#2364\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/reory\"\u003e\u003ccode\u003e@​reory\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.13.0\"\u003ev40.13.0 - 2026-04-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: Ensure deterministic locale selection in multi-locale mode. Thanks \u003ca href=\"https://github.com/just6660\"\u003e\u003ccode\u003e@​just6660\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/patakk\"\u003e\u003ccode\u003e@​patakk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ff243c83903918064dbbd939cab54bd30ca03681\"\u003e\u003ccode\u003eff243c8\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.1 → 40.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/632981e093ed1e601df66be03d129abb3c7dc827\"\u003e\u003ccode\u003e632981e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c8ee02038f7b92de94c0a7180e7e1d0b290aa938\"\u003e\u003ccode\u003ec8ee020\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ca29a01601437b5b8976eb782efa2ff0126b31d7\"\u003e\u003ccode\u003eca29a01\u003c/code\u003e\u003c/a\u003e Add job providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2352\"\u003e#2352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/740812bd39dc4bf3d82dc7a8a61d1d7a4bad10dc\"\u003e\u003ccode\u003e740812b\u003c/code\u003e\u003c/a\u003e Add company providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2351\"\u003e#2351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/6a495ba470e00e6f694e49f5ed5e1f15ff97ff71\"\u003e\u003ccode\u003e6a495ba\u003c/code\u003e\u003c/a\u003e Add geo providers for ar_DZ and fr_DZ locales  (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2350\"\u003e#2350\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f595fb2cc3b31eb349c455ea535b25275f48f1dd\"\u003e\u003ccode\u003ef595fb2\u003c/code\u003e\u003c/a\u003e Add currency providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2349\"\u003e#2349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/0c2aef9f142b1729394fb85ef905c64dd8f97c29\"\u003e\u003ccode\u003e0c2aef9\u003c/code\u003e\u003c/a\u003e add date_time provider for ar_DZ locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2348\"\u003e#2348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/2bb97dc79811864e1c6ebeb06b9b2dd557e8bbdc\"\u003e\u003ccode\u003e2bb97dc\u003c/code\u003e\u003c/a\u003e Add ssn providers for ar_DZ and fr_DZ locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2347\"\u003e#2347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/75a8ae7206f74bca87fbda1b201f1103420e670d\"\u003e\u003ccode\u003e75a8ae7\u003c/code\u003e\u003c/a\u003e Bump version: 40.14.0 → 40.14.1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.59.0 to 0.63.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.63.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.0...0.63.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.63.0...0.63.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePyrefly v0.63.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: April 27, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.63.0 bundles \u003cstrong\u003e129 commits\u003c/strong\u003e from \u003cstrong\u003e26 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Enum member types are preserved even when the metaclass conflicts with \u003ccode\u003eEnumMeta\u003c/code\u003e, reducing noise in projects using custom metaclasses with enums. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Constrained \u003ccode\u003eTypeVar\u003c/code\u003es no longer get pinned to a specific constraint when matched against \u003ccode\u003eAny\u003c/code\u003e, preventing false positives. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Self/cls annotations on all methods and classmethods are validated to ensure they reference the defining class or a superclass, catching more annotation errors.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The LSP now reports \u003ccode\u003eunused-ignore\u003c/code\u003e diagnostics when configured to do so, helping you clean up stale suppression comments. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Completions for attribute override definitions are available in class bodies, surfacing base-class members filtered by fuzzy match. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The LSP server no longer crashes on Jupyter notebook cell URIs (\u003ccode\u003evscode-notebook-cell:\u003c/code\u003e), with full support for resolving notebook cell paths and position offsets. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Workspace symbol search uses the correct location for re-exported symbols, preventing panics on multi-byte UTF-8 characters. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Inlay hints are clickable for built-in types like \u003ccode\u003etuple\u003c/code\u003e, \u003ccode\u003edict\u003c/code\u003e, and \u003ccode\u003estr\u003c/code\u003e, enabling go-to-definition directly from hint overlays.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Messages\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting \u0026amp; Coverage\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Public symbol filtering is available via \u003ccode\u003epyrefly report --public-only\u003c/code\u003e, using cross-module tracing to report only public symbols.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- TypedDict subset checks are now cached on the Solver, reducing CPU time by ~5.3x and wall time by ~6.7x on pydantic (from 9.5s to 1.4s).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration \u0026amp; Initialization\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- \u003ccode\u003epyrefly init\u003c/code\u003e supports \u003ccode\u003e--dry-run\u003c/code\u003e for safe previews without writing files, and \u003ccode\u003e--print-config\u003c/code\u003e for machine-readable TOML output.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e9\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3099\"\u003e#3099\u003c/a\u003e: Fixed an issue where property setters and deleters inflated typable counts in \u003ccode\u003epyrefly report\u003c/code\u003e by incorrectly counting their trivial \u003ccode\u003e-\u0026gt; None\u003c/code\u003e return types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3098\"\u003e#3098\u003c/a\u003e: Fixed an issue where overloads in \u003ccode\u003epyrefly report\u003c/code\u003e were not deduplicated, causing parameters and callable signatures to be counted multiple times and inflate coverage metrics.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3067\"\u003e#3067\u003c/a\u003e: Fixed an issue where the type display path was dropping the unpack marker (\u003ccode\u003e*\u003c/code\u003e) for direct \u003ccode\u003eTypeVarTuple\u003c/code\u003e arguments, causing \u003ccode\u003eShape\u003c/code\u003e to render bare instead of \u003ccode\u003e*Shape\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3040\"\u003e#3040\u003c/a\u003e: Fixed an issue where properties on metaclasses were not taking precedence over properties on the class during class-level attribute access, causing false \u003ccode\u003ebad-assignment\u003c/code\u003e and \u003ccode\u003ebad-return\u003c/code\u003e errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3150\"\u003e#3150\u003c/a\u003e: Fixed an issue where type aliases were inflating type coverage in \u003ccode\u003epyrefly report\u003c/code\u003e by being counted as typable entities.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3041\"\u003e#3041\u003c/a\u003e: Fixed a panic during workspace/symbol requests on re-exported symbols with multi-byte UTF-8 characters, caused by using the canonical module's byte offset against the re-exporting file's buffer.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3109\"\u003e#3109\u003c/a\u003e: Added a new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint that warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type, making the conversion redundant.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3187\"\u003e#3187\u003c/a\u003e: Fixed a panic in \u003ccode\u003epyrefly report\u003c/code\u003e when \u003ccode\u003e@no_type_check\u003c/code\u003e decorator was used, caused by a missing key lookup for skipped parameter annotations.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3090\"\u003e#3090\u003c/a\u003e: Improved the unused-coroutine error message when an \u003ccode\u003eawait\u003c/code\u003e expression already has \u003ccode\u003eawait\u003c/code\u003e but produces a coroutine due to an incorrect return type annotation on the function definition.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --upgrade pyrefly==0.63.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/e765bc651ba4017f8e83872c62e497054edd922d\"\u003e\u003ccode\u003ee765bc6\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/599bee32312972878756d0f54b36c161bad9598f\"\u003e\u003ccode\u003e599bee3\u003c/code\u003e\u003c/a\u003e better inlay hints docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a4ff846acb0ce215b7a15c0253f150b0a506b099\"\u003e\u003ccode\u003ea4ff846\u003c/code\u003e\u003c/a\u003e Add module uri to module tsp types (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/625877be165908162f4b875fba99daa61cb3e9cf\"\u003e\u003ccode\u003e625877b\u003c/code\u003e\u003c/a\u003e Implement multi-connection architecture (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3218\"\u003e#3218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/252c52a3f8d0cbe902eb58aee929028f9375cff6\"\u003e\u003ccode\u003e252c52a\u003c/code\u003e\u003c/a\u003e move process_event into own block\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/18bb101c9061de6f42a698bd827f6e9248de6bed\"\u003e\u003ccode\u003e18bb101\u003c/code\u003e\u003c/a\u003e factor out snapshot_changed_notification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/447f5f97e8badeff4a55e329d83fe4e67dc6ca8b\"\u003e\u003ccode\u003e447f5f9\u003c/code\u003e\u003c/a\u003e add set_experimental to server\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/84bdff6a151aec92969eea662a52cb24c1641a5b\"\u003e\u003ccode\u003e84bdff6\u003c/code\u003e\u003c/a\u003e Consolidate response helpers and extract parse_tsp_request\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/66b487bf83de7b00b0f615966c70b7ec290c4a2e\"\u003e\u003ccode\u003e66b487b\u003c/code\u003e\u003c/a\u003e Rename TspServer to TspConnection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/43ec5ac1260b56cea8c9be45548751fb949c34d6\"\u003e\u003ccode\u003e43ec5ac\u003c/code\u003e\u003c/a\u003e Add IPC transport for TSP connections (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3217\"\u003e#3217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.59.0...0.63.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pygments` from 2.19.0.20251121 to 2.20.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pytz` from 2026.1.1.20260304 to 2026.2.0.20260506\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/ariamalmohsen-git/CYS402/pull/29","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ariamalmohsen-git%2FCYS402/issues/29","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/29/packages"}},{"old_version":"0.62.0","new_version":"0.63.0","update_type":"minor","path":null,"pr_created_at":"2026-05-05T06:45:53.000Z","version_change":"0.62.0 → 0.63.0","issue":{"uuid":"4382114504","node_id":"PR_kwDORms75s7YSrIx","number":30,"state":"closed","title":"deps: bump the python-dependencies group with 3 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-09T05:43:47.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-05T06:45:53.000Z","updated_at":"2026-05-09T05:43:48.000Z","time_to_close":341874,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"python-dependencies","update_count":3,"packages":[{"name":"fastapi","old_version":"0.136.0","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pyrefly","old_version":"0.62.0","new_version":"0.63.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"ruff","old_version":"0.15.11","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 3 updates: [fastapi](https://github.com/fastapi/fastapi), [pyrefly](https://github.com/facebook/pyrefly) and [ruff](https://github.com/astral-sh/ruff).\n\nUpdates `fastapi` from 0.136.0 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.136.0...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.62.0 to 0.63.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.63.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: April 27, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.63.0 bundles \u003cstrong\u003e129 commits\u003c/strong\u003e from \u003cstrong\u003e26 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Enum member types are preserved even when the metaclass conflicts with \u003ccode\u003eEnumMeta\u003c/code\u003e, reducing noise in projects using custom metaclasses with enums. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Constrained \u003ccode\u003eTypeVar\u003c/code\u003es no longer get pinned to a specific constraint when matched against \u003ccode\u003eAny\u003c/code\u003e, preventing false positives. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Self/cls annotations on all methods and classmethods are validated to ensure they reference the defining class or a superclass, catching more annotation errors.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The LSP now reports \u003ccode\u003eunused-ignore\u003c/code\u003e diagnostics when configured to do so, helping you clean up stale suppression comments. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Completions for attribute override definitions are available in class bodies, surfacing base-class members filtered by fuzzy match. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The LSP server no longer crashes on Jupyter notebook cell URIs (\u003ccode\u003evscode-notebook-cell:\u003c/code\u003e), with full support for resolving notebook cell paths and position offsets. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Workspace symbol search uses the correct location for re-exported symbols, preventing panics on multi-byte UTF-8 characters. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Inlay hints are clickable for built-in types like \u003ccode\u003etuple\u003c/code\u003e, \u003ccode\u003edict\u003c/code\u003e, and \u003ccode\u003estr\u003c/code\u003e, enabling go-to-definition directly from hint overlays.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Messages\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting \u0026amp; Coverage\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Public symbol filtering is available via \u003ccode\u003epyrefly report --public-only\u003c/code\u003e, using cross-module tracing to report only public symbols.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- TypedDict subset checks are now cached on the Solver, reducing CPU time by ~5.3x and wall time by ~6.7x on pydantic (from 9.5s to 1.4s).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration \u0026amp; Initialization\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- \u003ccode\u003epyrefly init\u003c/code\u003e supports \u003ccode\u003e--dry-run\u003c/code\u003e for safe previews without writing files, and \u003ccode\u003e--print-config\u003c/code\u003e for machine-readable TOML output.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e9\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3099\"\u003e#3099\u003c/a\u003e: Fixed an issue where property setters and deleters inflated typable counts in \u003ccode\u003epyrefly report\u003c/code\u003e by incorrectly counting their trivial \u003ccode\u003e-\u0026gt; None\u003c/code\u003e return types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3098\"\u003e#3098\u003c/a\u003e: Fixed an issue where overloads in \u003ccode\u003epyrefly report\u003c/code\u003e were not deduplicated, causing parameters and callable signatures to be counted multiple times and inflate coverage metrics.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3067\"\u003e#3067\u003c/a\u003e: Fixed an issue where the type display path was dropping the unpack marker (\u003ccode\u003e*\u003c/code\u003e) for direct \u003ccode\u003eTypeVarTuple\u003c/code\u003e arguments, causing \u003ccode\u003eShape\u003c/code\u003e to render bare instead of \u003ccode\u003e*Shape\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3040\"\u003e#3040\u003c/a\u003e: Fixed an issue where properties on metaclasses were not taking precedence over properties on the class during class-level attribute access, causing false \u003ccode\u003ebad-assignment\u003c/code\u003e and \u003ccode\u003ebad-return\u003c/code\u003e errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3150\"\u003e#3150\u003c/a\u003e: Fixed an issue where type aliases were inflating type coverage in \u003ccode\u003epyrefly report\u003c/code\u003e by being counted as typable entities.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3041\"\u003e#3041\u003c/a\u003e: Fixed a panic during workspace/symbol requests on re-exported symbols with multi-byte UTF-8 characters, caused by using the canonical module's byte offset against the re-exporting file's buffer.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3109\"\u003e#3109\u003c/a\u003e: Added a new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint that warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type, making the conversion redundant.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3187\"\u003e#3187\u003c/a\u003e: Fixed a panic in \u003ccode\u003epyrefly report\u003c/code\u003e when \u003ccode\u003e@no_type_check\u003c/code\u003e decorator was used, caused by a missing key lookup for skipped parameter annotations.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3090\"\u003e#3090\u003c/a\u003e: Improved the unused-coroutine error message when an \u003ccode\u003eawait\u003c/code\u003e expression already has \u003ccode\u003eawait\u003c/code\u003e but produces a coroutine due to an incorrect return type annotation on the function definition.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --upgrade pyrefly==0.63.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eHow to safely upgrade your codebase\u003c/h3\u003e\n\u003cp\u003eUpgrading the version of Pyrefly you're using or a third-party library you depend on can reveal new type errors in your code. Fixing them all at once is often unrealistic. We've written scripts to help you temporarily silence them. After upgrading, follow these steps:\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/facebook/pyrefly/commit/74a09114d9520fd67ea7dfef454a0d1f95ac843c\"\u003e\u003ccode\u003e74a0911\u003c/code\u003e\u003c/a\u003e Update pyrefly version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/0bc7f81da03b83978bbd6c13fa85b5afca7b8913\"\u003e\u003ccode\u003e0bc7f81\u003c/code\u003e\u003c/a\u003e Add factory-boy type stubs for testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/46e2c6a26d2f18857eb05303bbd38b78399e4625\"\u003e\u003ccode\u003e46e2c6a\u003c/code\u003e\u003c/a\u003e Add /port-model skill for tensor shape model porting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/6db5a7653258620b8c87d00d0e46428759186e33\"\u003e\u003ccode\u003e6db5a76\u003c/code\u003e\u003c/a\u003e Add TSP integration tests for notebook cell URIs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f137c67fe1128cc55c1da43458f479a2b220b21d\"\u003e\u003ccode\u003ef137c67\u003c/code\u003e\u003c/a\u003e fix license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/107d2814ff44c1560e076d0c55b827f4db913cba\"\u003e\u003ccode\u003e107d281\u003c/code\u003e\u003c/a\u003e Bump capnp 0.25.2 -\u0026gt; 0.25.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/0e47e9a79e22a526712d43a7579a658189e79ef4\"\u003e\u003ccode\u003e0e47e9a\u003c/code\u003e\u003c/a\u003e Bump pkg-config 0.3.32 -\u0026gt; 0.3.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/14dfe00dd37ad9b76f33c707e5f84b3fe15ee79c\"\u003e\u003ccode\u003e14dfe00\u003c/code\u003e\u003c/a\u003e Bump rand 0.10.0 -\u0026gt; 0.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fefc52cdaf93e09fd7cbe66151674cfda8c696d6\"\u003e\u003ccode\u003efefc52c\u003c/code\u003e\u003c/a\u003e Add decompose_hint helper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/01eeae6511041cc2fa71069f3cb15b4752949330\"\u003e\u003ccode\u003e01eeae6\u003c/code\u003e\u003c/a\u003e Remove distinction between SubsetWithSnapshotResult::InstantiationErrors and ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.62.0...0.63.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.11 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.12\"\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/bos/jj-review/pull/30","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bos%2Fjj-review/issues/30","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/30/packages"}},{"old_version":"0.62.0","new_version":"0.63.0","update_type":"minor","path":null,"pr_created_at":"2026-05-05T04:02:25.000Z","version_change":"0.62.0 → 0.63.0","issue":{"uuid":"4381423526","node_id":"PR_kwDOP_HjxM7YQddr","number":1004,"state":"open","title":"Bump pyrefly from 0.62.0 to 0.63.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-05T04:02:25.000Z","updated_at":"2026-05-05T04:08:52.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pyrefly","old_version":"0.62.0","new_version":"0.63.0","repository_url":"https://github.com/facebook/pyrefly"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.62.0 to 0.63.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.63.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : BETA\u003c/strong\u003e\n\u003cem\u003eRelease date: April 27, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.63.0 bundles \u003cstrong\u003e129 commits\u003c/strong\u003e from \u003cstrong\u003e26 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eArea\u003c/th\u003e\n\u003cth\u003eWhat's new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Enum member types are preserved even when the metaclass conflicts with \u003ccode\u003eEnumMeta\u003c/code\u003e, reducing noise in projects using custom metaclasses with enums. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Constrained \u003ccode\u003eTypeVar\u003c/code\u003es no longer get pinned to a specific constraint when matched against \u003ccode\u003eAny\u003c/code\u003e, preventing false positives. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Self/cls annotations on all methods and classmethods are validated to ensure they reference the defining class or a superclass, catching more annotation errors.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- The LSP now reports \u003ccode\u003eunused-ignore\u003c/code\u003e diagnostics when configured to do so, helping you clean up stale suppression comments. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Completions for attribute override definitions are available in class bodies, surfacing base-class members filtered by fuzzy match. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- The LSP server no longer crashes on Jupyter notebook cell URIs (\u003ccode\u003evscode-notebook-cell:\u003c/code\u003e), with full support for resolving notebook cell paths and position offsets. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Workspace symbol search uses the correct location for re-exported symbols, preventing panics on multi-byte UTF-8 characters. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Inlay hints are clickable for built-in types like \u003ccode\u003etuple\u003c/code\u003e, \u003ccode\u003edict\u003c/code\u003e, and \u003ccode\u003estr\u003c/code\u003e, enabling go-to-definition directly from hint overlays.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eError Messages\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- A new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eReporting \u0026amp; Coverage\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- Public symbol filtering is available via \u003ccode\u003epyrefly report --public-only\u003c/code\u003e, using cross-module tracing to report only public symbols.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- TypedDict subset checks are now cached on the Solver, reducing CPU time by ~5.3x and wall time by ~6.7x on pydantic (from 9.5s to 1.4s).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eConfiguration \u0026amp; Initialization\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003e- \u003ccode\u003epyrefly init\u003c/code\u003e supports \u003ccode\u003e--dry-run\u003c/code\u003e for safe previews without writing files, and \u003ccode\u003e--print-config\u003c/code\u003e for machine-readable TOML output.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed \u003cstrong\u003e9\u003c/strong\u003e bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3099\"\u003e#3099\u003c/a\u003e: Fixed an issue where property setters and deleters inflated typable counts in \u003ccode\u003epyrefly report\u003c/code\u003e by incorrectly counting their trivial \u003ccode\u003e-\u0026gt; None\u003c/code\u003e return types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3098\"\u003e#3098\u003c/a\u003e: Fixed an issue where overloads in \u003ccode\u003epyrefly report\u003c/code\u003e were not deduplicated, causing parameters and callable signatures to be counted multiple times and inflate coverage metrics.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3067\"\u003e#3067\u003c/a\u003e: Fixed an issue where the type display path was dropping the unpack marker (\u003ccode\u003e*\u003c/code\u003e) for direct \u003ccode\u003eTypeVarTuple\u003c/code\u003e arguments, causing \u003ccode\u003eShape\u003c/code\u003e to render bare instead of \u003ccode\u003e*Shape\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3040\"\u003e#3040\u003c/a\u003e: Fixed an issue where properties on metaclasses were not taking precedence over properties on the class during class-level attribute access, causing false \u003ccode\u003ebad-assignment\u003c/code\u003e and \u003ccode\u003ebad-return\u003c/code\u003e errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3150\"\u003e#3150\u003c/a\u003e: Fixed an issue where type aliases were inflating type coverage in \u003ccode\u003epyrefly report\u003c/code\u003e by being counted as typable entities.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3041\"\u003e#3041\u003c/a\u003e: Fixed a panic during workspace/symbol requests on re-exported symbols with multi-byte UTF-8 characters, caused by using the canonical module's byte offset against the re-exporting file's buffer.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3109\"\u003e#3109\u003c/a\u003e: Added a new \u003ccode\u003eunnecessary-type-conversion\u003c/code\u003e lint that warns when \u003ccode\u003estr()\u003c/code\u003e, \u003ccode\u003eint()\u003c/code\u003e, or \u003ccode\u003efloat()\u003c/code\u003e is called on an argument that is already of that exact type, making the conversion redundant.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3187\"\u003e#3187\u003c/a\u003e: Fixed a panic in \u003ccode\u003epyrefly report\u003c/code\u003e when \u003ccode\u003e@no_type_check\u003c/code\u003e decorator was used, caused by a missing key lookup for skipped parameter annotations.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3090\"\u003e#3090\u003c/a\u003e: Improved the unused-coroutine error message when an \u003ccode\u003eawait\u003c/code\u003e expression already has \u003ccode\u003eawait\u003c/code\u003e but produces a coroutine due to an incorrect return type annotation on the function definition.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --upgrade pyrefly==0.63.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eHow to safely upgrade your codebase\u003c/h3\u003e\n\u003cp\u003eUpgrading the version of Pyrefly you're using or a third-party library you depend on can reveal new type errors in your code. Fixing them all at once is often unrealistic. We've written scripts to help you temporarily silence them. After upgrading, follow these steps:\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/facebook/pyrefly/commit/74a09114d9520fd67ea7dfef454a0d1f95ac843c\"\u003e\u003ccode\u003e74a0911\u003c/code\u003e\u003c/a\u003e Update pyrefly version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/0bc7f81da03b83978bbd6c13fa85b5afca7b8913\"\u003e\u003ccode\u003e0bc7f81\u003c/code\u003e\u003c/a\u003e Add factory-boy type stubs for testing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/46e2c6a26d2f18857eb05303bbd38b78399e4625\"\u003e\u003ccode\u003e46e2c6a\u003c/code\u003e\u003c/a\u003e Add /port-model skill for tensor shape model porting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/6db5a7653258620b8c87d00d0e46428759186e33\"\u003e\u003ccode\u003e6db5a76\u003c/code\u003e\u003c/a\u003e Add TSP integration tests for notebook cell URIs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f137c67fe1128cc55c1da43458f479a2b220b21d\"\u003e\u003ccode\u003ef137c67\u003c/code\u003e\u003c/a\u003e fix license\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/107d2814ff44c1560e076d0c55b827f4db913cba\"\u003e\u003ccode\u003e107d281\u003c/code\u003e\u003c/a\u003e Bump capnp 0.25.2 -\u0026gt; 0.25.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/0e47e9a79e22a526712d43a7579a658189e79ef4\"\u003e\u003ccode\u003e0e47e9a\u003c/code\u003e\u003c/a\u003e Bump pkg-config 0.3.32 -\u0026gt; 0.3.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/14dfe00dd37ad9b76f33c707e5f84b3fe15ee79c\"\u003e\u003ccode\u003e14dfe00\u003c/code\u003e\u003c/a\u003e Bump rand 0.10.0 -\u0026gt; 0.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/fefc52cdaf93e09fd7cbe66151674cfda8c696d6\"\u003e\u003ccode\u003efefc52c\u003c/code\u003e\u003c/a\u003e Add decompose_hint helper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/01eeae6511041cc2fa71069f3cb15b4752949330\"\u003e\u003ccode\u003e01eeae6\u003c/code\u003e\u003c/a\u003e Remove distinction between SubsetWithSnapshotResult::InstantiationErrors and ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.62.0...0.63.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=pyrefly\u0026package-manager=uv\u0026previous-version=0.62.0\u0026new-version=0.63.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)\n\n\n\u003c/details\u003e","html_url":"https://github.com/wemake-services/django-modern-rest/pull/1004","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wemake-services%2Fdjango-modern-rest/issues/1004","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1004/packages"}},{"old_version":"\u003c0.55,\u003e=0.54.0","new_version":"\u003e=0.54.0,\u003c0.64","update_type":null,"path":"/Wrapping/Python/MCPServer","pr_created_at":"2026-05-02T03:33:23.000Z","version_change":"\u003c0.55,\u003e=0.54.0 → \u003e=0.54.0,\u003c0.64","issue":{"uuid":"4367766888","node_id":"PR_kwDORbN64c7Xli21","number":29,"state":"open","title":"chore(deps-dev): Update pyrefly requirement from \u003c0.55,\u003e=0.54.0 to \u003e=0.54.0,\u003c0.64 in /Wrapping/Python/MCPServer","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-02T03:33:23.000Z","updated_at":"2026-05-02T03:34:49.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): Update","packages":[{"name":"pyrefly","old_version":"\u003c0.55,\u003e=0.54.0","new_version":"\u003e=0.54.0,\u003c0.64","repository_url":"https://github.com/facebook/pyrefly"}],"path":"/Wrapping/Python/MCPServer","ecosystem":"pip"},"body":"Updates the requirements on [pyrefly](https://github.com/facebook/pyrefly) 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/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.63.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.63.0...0.63.1\"\u003ehttps://github.com/facebook/pyrefly/compare/0.63.0...0.63.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/facebook/pyrefly/commit/e765bc651ba4017f8e83872c62e497054edd922d\"\u003e\u003ccode\u003ee765bc6\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/599bee32312972878756d0f54b36c161bad9598f\"\u003e\u003ccode\u003e599bee3\u003c/code\u003e\u003c/a\u003e better inlay hints docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a4ff846acb0ce215b7a15c0253f150b0a506b099\"\u003e\u003ccode\u003ea4ff846\u003c/code\u003e\u003c/a\u003e Add module uri to module tsp types (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/625877be165908162f4b875fba99daa61cb3e9cf\"\u003e\u003ccode\u003e625877b\u003c/code\u003e\u003c/a\u003e Implement multi-connection architecture (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3218\"\u003e#3218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/252c52a3f8d0cbe902eb58aee929028f9375cff6\"\u003e\u003ccode\u003e252c52a\u003c/code\u003e\u003c/a\u003e move process_event into own block\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/18bb101c9061de6f42a698bd827f6e9248de6bed\"\u003e\u003ccode\u003e18bb101\u003c/code\u003e\u003c/a\u003e factor out snapshot_changed_notification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/447f5f97e8badeff4a55e329d83fe4e67dc6ca8b\"\u003e\u003ccode\u003e447f5f9\u003c/code\u003e\u003c/a\u003e add set_experimental to server\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/84bdff6a151aec92969eea662a52cb24c1641a5b\"\u003e\u003ccode\u003e84bdff6\u003c/code\u003e\u003c/a\u003e Consolidate response helpers and extract parse_tsp_request\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/66b487bf83de7b00b0f615966c70b7ec290c4a2e\"\u003e\u003ccode\u003e66b487b\u003c/code\u003e\u003c/a\u003e Rename TspServer to TspConnection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/43ec5ac1260b56cea8c9be45548751fb949c34d6\"\u003e\u003ccode\u003e43ec5ac\u003c/code\u003e\u003c/a\u003e Add IPC transport for TSP connections (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/3217\"\u003e#3217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.54.0...0.63.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/failed33/paraview-mcp/pull/29","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/failed33%2Fparaview-mcp/issues/29","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/29/packages"}}]}