{"id":621,"name":"flask","ecosystem":"pip","repository_url":"https://github.com/pallets/flask","issues_count":5528,"created_at":"2025-06-06T15:01:35.996Z","updated_at":"2025-06-06T15:01:35.996Z","purl":"pkg:pypi/flask","metadata":{"id":2735393,"name":"flask","ecosystem":"pypi","description":"A simple framework for building complex web applications.","homepage":null,"licenses":"bsd-3-clause","normalized_licenses":["BSD-3-Clause"],"repository_url":"https://github.com/pallets/flask","keywords_array":[],"namespace":null,"versions_count":62,"first_release_published_at":"2010-04-16T14:29:37.000Z","latest_release_published_at":"2025-05-13T15:01:15.000Z","latest_release_number":"3.1.1","last_synced_at":"2025-06-06T00:51:54.511Z","created_at":"2022-04-10T11:00:48.569Z","updated_at":"2025-06-06T00:51:54.511Z","registry_url":"https://pypi.org/project/flask/","install_command":"pip install flask --index-url https://pypi.org/simple","documentation_url":"https://flask.palletsprojects.com/","metadata":{"funding":null,"documentation":"https://flask.palletsprojects.com/","classifiers":["Development Status :: 5 - Production/Stable","Environment :: Web Environment","Framework :: Flask","Intended Audience :: Developers","Operating System :: OS Independent","Programming Language :: Python","Topic :: Internet :: WWW/HTTP :: Dynamic Content","Topic :: Internet :: WWW/HTTP :: WSGI","Topic :: Internet :: WWW/HTTP :: WSGI :: Application","Topic :: Software Development :: Libraries :: Application Frameworks","Typing :: Typed"],"normalized_name":"flask"},"repo_metadata":{"id":861255,"uuid":"596892","full_name":"pallets/flask","owner":"pallets","description":"The Python micro framework for building web applications.","archived":false,"fork":false,"pushed_at":"2024-05-21T23:53:38.000Z","size":10527,"stargazers_count":66603,"open_issues_count":7,"forks_count":16014,"subscribers_count":2128,"default_branch":"main","last_synced_at":"2024-05-23T07:48:35.689Z","etag":null,"topics":["flask","jinja","pallets","python","web-framework","werkzeug","wsgi"],"latest_commit_sha":null,"homepage":"https://flask.palletsprojects.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pallets.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE.txt","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},"funding":{"github":"pallets","custom":"https://palletsprojects.com/donate","tidelift":"pypi/Flask"}},"created_at":"2010-04-06T11:11:59.000Z","updated_at":"2024-06-01T17:16:56.924Z","dependencies_parsed_at":"2023-11-07T03:01:12.145Z","dependency_job_id":"42d633e3-1e13-4c34-a8b6-57eb9219ce59","html_url":"https://github.com/pallets/flask","commit_stats":{"total_commits":3600,"total_committers":838,"mean_commits":"4.2959427207637235","dds":0.7291666666666667,"last_synced_commit":"beedaa4eff3919f250fad49a5092cf07c4d638e1"},"previous_names":[],"tags_count":58,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pallets","download_url":"https://codeload.github.com/pallets/flask/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":215972318,"owners_count":15956838,"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":"pallets","name":"Pallets","uuid":"16748505","kind":"organization","description":"","email":"contact@palletsprojects.com","website":"https://palletsprojects.com","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/16748505?v=4","repositories_count":14,"last_synced_at":"2024-05-20T15:03:33.916Z","metadata":{"has_sponsors_listing":true,"funding":{"github":"pallets","custom":"https://palletsprojects.com/donate","tidelift":"pypi/Flask"}},"html_url":"https://github.com/pallets","funding_links":["https://github.com/sponsors/pallets","https://palletsprojects.com/donate","https://tidelift.com/funding/github/pypi/Flask"],"total_stars":106035,"followers":1290,"following":0,"created_at":"2022-11-02T16:23:17.051Z","updated_at":"2024-05-20T15:03:35.310Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pallets","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pallets/repositories"},"tags":[{"name":"3.0.3","sha":"c12a5d874c5a014495eb2db8a73f40037bc813ac","kind":"tag","published_at":"2024-04-07T19:19:46.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/3.0.3","html_url":"https://github.com/pallets/flask/releases/tag/3.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/3.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/3.0.3/manifests"},{"name":"3.0.2","sha":"d2030595dcdc8ca5701504f00255360fb12a3a2b","kind":"tag","published_at":"2024-02-03T21:03:16.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/3.0.2","html_url":"https://github.com/pallets/flask/releases/tag/3.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/3.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/3.0.2/manifests"},{"name":"3.0.1","sha":"f622b1cadea2bed4ea4cc476695e9c181ec5da11","kind":"tag","published_at":"2024-01-18T19:57:54.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/3.0.1","html_url":"https://github.com/pallets/flask/releases/tag/3.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/3.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/3.0.1/manifests"},{"name":"3.0.0","sha":"735a4701d6d5e848241e7d7535db898efb62d400","kind":"commit","published_at":"2023-09-30T14:26:06.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/3.0.0","html_url":"https://github.com/pallets/flask/releases/tag/3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/3.0.0/manifests"},{"name":"2.3.3","sha":"3205b53c7cf69d17fee49cac6b84978175b7dd73","kind":"tag","published_at":"2023-08-21T17:57:53.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.3.3","html_url":"https://github.com/pallets/flask/releases/tag/2.3.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.3.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.3.3/manifests"},{"name":"2.2.5","sha":"47af817c8fe01045c641b97f8fb784c7ad864eee","kind":"tag","published_at":"2023-05-02T14:36:00.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.2.5","html_url":"https://github.com/pallets/flask/releases/tag/2.2.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.5/manifests"},{"name":"2.3.2","sha":"f3b8f570545200c87465d18386f3fc9f2258307a","kind":"tag","published_at":"2023-05-01T15:35:38.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.3.2","html_url":"https://github.com/pallets/flask/releases/tag/2.3.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.3.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.3.2/manifests"},{"name":"2.3.1","sha":"721abdc3810057269503a72d2db80fb826f3c85c","kind":"tag","published_at":"2023-04-25T20:14:58.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.3.1","html_url":"https://github.com/pallets/flask/releases/tag/2.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.3.1/manifests"},{"name":"2.3.0","sha":"8728c3e4cd4e929a4327d917acd4b96c75f963d0","kind":"tag","published_at":"2023-04-25T18:36:50.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.3.0","html_url":"https://github.com/pallets/flask/releases/tag/2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.3.0/manifests"},{"name":"2.2.4","sha":"74e03298200e33951ca350a35aa3a8c0b4ff8177","kind":"tag","published_at":"2023-04-25T17:44:49.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.2.4","html_url":"https://github.com/pallets/flask/releases/tag/2.2.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.4/manifests"},{"name":"2.2.3","sha":"41d4f62909bb426c84e9d057151f7d734695320a","kind":"tag","published_at":"2023-02-15T22:39:24.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.2.3","html_url":"https://github.com/pallets/flask/releases/tag/2.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.3/manifests"},{"name":"2.2.2","sha":"a1c478bc93d3dc018a6e7a1ba3cf5409553c9df3","kind":"tag","published_at":"2022-08-08T23:25:33.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.2.2","html_url":"https://github.com/pallets/flask/releases/tag/2.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.2/manifests"},{"name":"2.2.1","sha":"85f79e1a2360c3589b228410c39e208b8514b5b9","kind":"tag","published_at":"2022-08-03T23:51:45.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.2.1","html_url":"https://github.com/pallets/flask/releases/tag/2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.1/manifests"},{"name":"2.2.0","sha":"b17bb9ed563ab2857c0db9a07ec4e6407404c7be","kind":"tag","published_at":"2022-08-02T00:14:22.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.2.0","html_url":"https://github.com/pallets/flask/releases/tag/2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.2.0/manifests"},{"name":"2.1.3","sha":"187d7179f605d28c3d24e9f4d65d3295fb099afe","kind":"tag","published_at":"2022-07-13T20:54:55.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.1.3","html_url":"https://github.com/pallets/flask/releases/tag/2.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.1.3/manifests"},{"name":"2.1.2","sha":"50374e3cfe815acd24fd390c861561a0dd17bfbb","kind":"tag","published_at":"2022-04-28T17:48:24.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.1.2","html_url":"https://github.com/pallets/flask/releases/tag/2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.1.2/manifests"},{"name":"2.1.1","sha":"188bd17ff1f3e1d9c9ddd015c8765280e95ffb83","kind":"tag","published_at":"2022-03-30T21:38:55.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.1.1","html_url":"https://github.com/pallets/flask/releases/tag/2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.1.1/manifests"},{"name":"2.1.0","sha":"65b0eef303dfec6b7baa66ff34253e0285e1c3bf","kind":"tag","published_at":"2022-03-28T19:12:29.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.1.0","html_url":"https://github.com/pallets/flask/releases/tag/2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.1.0/manifests"},{"name":"2.0.3","sha":"ef557b3ff2602b9956a2f3ac02c6e134c529fccc","kind":"tag","published_at":"2022-02-14T19:47:04.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.0.3","html_url":"https://github.com/pallets/flask/releases/tag/2.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.3/manifests"},{"name":"2.0.2","sha":"6f7762538bffe3ce9d03508ecab230bfff3e3dcd","kind":"tag","published_at":"2021-10-04T14:35:54.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.0.2","html_url":"https://github.com/pallets/flask/releases/tag/2.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.2/manifests"},{"name":"2.0.1","sha":"bc90801c2ada42d3cf112a3b5701bfdbb8b6211c","kind":"tag","published_at":"2021-05-21T15:52:43.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.0.1","html_url":"https://github.com/pallets/flask/releases/tag/2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.1/manifests"},{"name":"1.1.4","sha":"1ca199f9b38b70a4e97cb47a4252ffd7fccc008c","kind":"tag","published_at":"2021-05-14T01:45:17.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/1.1.4","html_url":"https://github.com/pallets/flask/releases/tag/1.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.1.4/manifests"},{"name":"1.1.3","sha":"c04b0de558fe8e1ccb8edb4525d40e725ae9a24d","kind":"tag","published_at":"2021-05-13T23:25:31.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/1.1.3","html_url":"https://github.com/pallets/flask/releases/tag/1.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.1.3/manifests"},{"name":"2.0.0","sha":"2f0c62f5e6e290843f03c1fa70817c7a3c7fd661","kind":"tag","published_at":"2021-05-11T21:44:16.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.0.0","html_url":"https://github.com/pallets/flask/releases/tag/2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.0/manifests"},{"name":"2.0.0rc2","sha":"d7ac6f5bcf324e7fc588e501b2f18669efd5a12a","kind":"tag","published_at":"2021-05-03T14:14:10.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.0.0rc2","html_url":"https://github.com/pallets/flask/releases/tag/2.0.0rc2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.0rc2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.0rc2/manifests"},{"name":"2.0.0rc1","sha":"34eb0dad154177825885d0b9d895538f26a8aee8","kind":"tag","published_at":"2021-04-16T15:54:31.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/2.0.0rc1","html_url":"https://github.com/pallets/flask/releases/tag/2.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/2.0.0rc1/manifests"},{"name":"1.1.2","sha":"93dd1709d05a1cf0e886df6223377bdab3b077fb","kind":"commit","published_at":"2020-04-03T17:10:38.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/1.1.2","html_url":"https://github.com/pallets/flask/releases/tag/1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.1.2/manifests"},{"name":"0.12.5","sha":"191710cbda616a53533d5e794a787f24c453ac5a","kind":"commit","published_at":"2020-02-10T19:30:59.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.12.5","html_url":"https://github.com/pallets/flask/releases/tag/0.12.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12.5/manifests"},{"name":"1.1.1","sha":"ffc68840f821fb0a4c41a7b2b4eaad6d71f539b7","kind":"commit","published_at":"2019-07-08T17:58:12.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/1.1.1","html_url":"https://github.com/pallets/flask/releases/tag/1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.1.1/manifests"},{"name":"1.1.0","sha":"1b4ace9ba5e77679bf9d8e409283654f7589907e","kind":"commit","published_at":"2019-07-04T23:04:42.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/1.1.0","html_url":"https://github.com/pallets/flask/releases/tag/1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.1.0/manifests"},{"name":"1.0.4","sha":"626b5cc166e6151dfe0e86b514b2d9a1f55752a8","kind":"commit","published_at":"2019-07-04T22:33:46.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/1.0.4","html_url":"https://github.com/pallets/flask/releases/tag/1.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.0.4/manifests"},{"name":"1.0.3","sha":"99660cc40984015cbbcd27d1cdc19376b2536443","kind":"commit","published_at":"2019-05-17T17:57:51.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/1.0.3","html_url":"https://github.com/pallets/flask/releases/tag/1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.0.3/manifests"},{"name":"1.0.2","sha":"dfd3619d6f8796d48fc4e32f819cec9e8aa59156","kind":"commit","published_at":"2018-05-02T14:16:14.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/1.0.2","html_url":"https://github.com/pallets/flask/releases/tag/1.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.0.2/manifests"},{"name":"1.0.1","sha":"a15795c99e24c50e2dc85393a8904f3093742646","kind":"commit","published_at":"2018-04-30T02:08:16.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/1.0.1","html_url":"https://github.com/pallets/flask/releases/tag/1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.0.1/manifests"},{"name":"0.12.4","sha":"5beb3be536cc743962de6cd2bd95a6e036d11f52","kind":"commit","published_at":"2018-04-30T01:23:30.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.12.4","html_url":"https://github.com/pallets/flask/releases/tag/0.12.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12.4/manifests"},{"name":"1.0","sha":"291f3c338c4d302dbde01ab9153a7817e5a780f5","kind":"commit","published_at":"2018-04-26T19:25:54.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/1.0","html_url":"https://github.com/pallets/flask/releases/tag/1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/1.0/manifests"},{"name":"0.12.3","sha":"1a9e58e8c97c47c969736d46410f724f4e834f54","kind":"commit","published_at":"2018-04-26T19:12:11.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.12.3","html_url":"https://github.com/pallets/flask/releases/tag/0.12.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12.3/manifests"},{"name":"0.12.2","sha":"571334df8e26333f34873a3dcb84441946e6c64c","kind":"commit","published_at":"2017-05-16T06:39:30.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.12.2","html_url":"https://github.com/pallets/flask/releases/tag/0.12.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12.2/manifests"},{"name":"0.12.1","sha":"a34d0e6878c8c8a5fab05a69785c443f3c17075d","kind":"commit","published_at":"2017-03-31T16:43:36.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.12.1","html_url":"https://github.com/pallets/flask/releases/tag/0.12.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12.1/manifests"},{"name":"0.12","sha":"1042d9d23f3c61f4474aea568a359337cf450fab","kind":"commit","published_at":"2016-12-21T20:22:08.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.12","html_url":"https://github.com/pallets/flask/releases/tag/0.12","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.12/manifests"},{"name":"0.11.1","sha":"d1d82ca8ce7262ad9d27245ce44f86571287810e","kind":"commit","published_at":"2016-06-07T16:22:43.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.11.1","html_url":"https://github.com/pallets/flask/releases/tag/0.11.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.11.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.11.1/manifests"},{"name":"0.11","sha":"13e6a01ac86f9b8c0cad692d5e5e8d600674fb6d","kind":"commit","published_at":"2016-05-29T09:02:23.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.11","html_url":"https://github.com/pallets/flask/releases/tag/0.11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.11/manifests"},{"name":"0.10.1","sha":"298334fffc8288b5a9a45ef4150e3c4292e45318","kind":"commit","published_at":"2013-06-14T08:54:07.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.10.1","html_url":"https://github.com/pallets/flask/releases/tag/0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.10.1/manifests"},{"name":"0.10","sha":"3b9574fec988fca790ffe78b64ef30b22dd3386a","kind":"commit","published_at":"2013-06-13T08:35:35.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.10","html_url":"https://github.com/pallets/flask/releases/tag/0.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.10/manifests"},{"name":"0.9","sha":"ee3e251f9eb557721517faa6d06a6addd48ebc24","kind":"commit","published_at":"2012-07-01T11:12:36.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.9","html_url":"https://github.com/pallets/flask/releases/tag/0.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.9/manifests"},{"name":"0.8.1","sha":"19def9606ac50bd308ea283e283cbcf62498d6c7","kind":"commit","published_at":"2012-07-01T11:08:38.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.8.1","html_url":"https://github.com/pallets/flask/releases/tag/0.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.8.1/manifests"},{"name":"0.8","sha":"d5e10e4685f54dde5ffc27c4f55a19fb23f7a536","kind":"commit","published_at":"2011-09-29T21:34:02.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.8","html_url":"https://github.com/pallets/flask/releases/tag/0.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.8/manifests"},{"name":"0.7.2","sha":"3f5db33ece48bd22b77fcc62553998ea9a6cfdfc","kind":"commit","published_at":"2011-07-06T08:19:27.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.7.2","html_url":"https://github.com/pallets/flask/releases/tag/0.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.7.2/manifests"},{"name":"0.7.1","sha":"9682d6b371d8c1ce1fd0e58424e836d27d2317b3","kind":"commit","published_at":"2011-06-29T16:37:22.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.7.1","html_url":"https://github.com/pallets/flask/releases/tag/0.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.7.1/manifests"},{"name":"0.7","sha":"fb1482d3bb1b95803d25247479eb8ca8317a3219","kind":"commit","published_at":"2011-06-28T12:36:52.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.7","html_url":"https://github.com/pallets/flask/releases/tag/0.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.7/manifests"},{"name":"0.6.1","sha":"774b7f768214f5b0c125a1b80daa97247a0ac1a6","kind":"commit","published_at":"2010-12-31T14:21:46.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.6.1","html_url":"https://github.com/pallets/flask/releases/tag/0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.6.1/manifests"},{"name":"0.6","sha":"5cadd9d34da46b909f91a5379d41b90f258d5998","kind":"commit","published_at":"2010-07-27T12:38:59.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.6","html_url":"https://github.com/pallets/flask/releases/tag/0.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.6/manifests"},{"name":"0.5","sha":"4c937be2524de0fddc2d2f7f39b09677497260aa","kind":"commit","published_at":"2010-07-06T14:25:44.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.5","html_url":"https://github.com/pallets/flask/releases/tag/0.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.5/manifests"},{"name":"0.4","sha":"1592c53a664c82d9badac81fa0104af226cce5a7","kind":"commit","published_at":"2010-06-18T15:13:32.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.4","html_url":"https://github.com/pallets/flask/releases/tag/0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.4/manifests"},{"name":"0.3.1","sha":"6b3e616cf905fd19c37fca93d1198cad1490567b","kind":"commit","published_at":"2010-05-28T19:21:28.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.3.1","html_url":"https://github.com/pallets/flask/releases/tag/0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.3.1/manifests"},{"name":"0.3","sha":"ce6e4cbd73d57cb8c1bba85c46490f71061f865f","kind":"commit","published_at":"2010-05-27T23:18:29.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.3","html_url":"https://github.com/pallets/flask/releases/tag/0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.3/manifests"},{"name":"0.2","sha":"e0fa5aec3a13d9c3e8e27b53526fcee56ac0298d","kind":"commit","published_at":"2010-05-11T23:30:10.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.2","html_url":"https://github.com/pallets/flask/releases/tag/0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.2/manifests"},{"name":"0.1","sha":"8605cc310d260c3b08160881b09da26c2cc95f8d","kind":"commit","published_at":"2010-04-16T12:25:24.000Z","download_url":"https://codeload.github.com/pallets/flask/tar.gz/0.1","html_url":"https://github.com/pallets/flask/releases/tag/0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pallets%2Fflask/tags/0.1/manifests"}]},"repo_metadata_updated_at":"2024-09-08T01:57:54.909Z","dependent_packages_count":2451,"downloads":113825036,"downloads_period":"last-month","dependent_repos_count":119058,"rankings":{"downloads":0.010638161285530084,"dependent_repos_count":0.008803995546645587,"dependent_packages_count":0.011004994433306981,"stargazers_count":0.03081398441325955,"forks_count":0.03558281533435924,"docker_downloads_count":0.2775092762932244,"average":0.06239220455105431},"purl":"pkg:pypi/flask","advisories":[{"uuid":"GSA_kwCzR0hTQS1tMnFmLWh4anYtNWdwcc4AAzC9","url":"https://github.com/advisories/GHSA-m2qf-hxjv-5gpq","title":"Flask vulnerable to possible disclosure of permanent session cookie due to missing Vary: Cookie header","description":"When all of the following conditions are met, a response containing data intended for one client may be cached and subsequently sent by a proxy to other clients. If the proxy also caches `Set-Cookie` headers, it may send one client's `session` cookie to other clients. The severity depends on the application's use of the session, and the proxy's behavior regarding cookies. The risk depends on _all_ these conditions being met.\n\n1. The application must be hosted behind a caching proxy that does not strip cookies or ignore responses with cookies.\n2. The application sets [`session.permanent = True`](https://flask.palletsprojects.com/en/2.3.x/api/#flask.session.permanent).\n2. The application does not access or modify the session at any point during a request.\n4. [`SESSION_REFRESH_EACH_REQUEST`](https://flask.palletsprojects.com/en/2.3.x/config/#SESSION_REFRESH_EACH_REQUEST) is enabled (the default).\n5. The application does not set a `Cache-Control` header to indicate that a page is private or should not be cached.\n\nThis happens because vulnerable versions of Flask only set the `Vary: Cookie` header when the session is accessed or modified, not when it is refreshed (re-sent to update the expiration) without being accessed or modified.","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2023-05-01T19:22:20.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":8.7,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N","references":["https://github.com/pallets/flask/security/advisories/GHSA-m2qf-hxjv-5gpq","https://github.com/pallets/flask/commit/70f906c51ce49c485f1d355703e9cc3386b1cc2b","https://github.com/pallets/flask/releases/tag/2.3.2","https://github.com/pallets/flask/commit/afd63b16170b7c047f5758eb910c416511e9c965","https://nvd.nist.gov/vuln/detail/CVE-2023-30861","https://github.com/pallets/flask/releases/tag/2.2.5","https://github.com/pypa/advisory-database/tree/main/vulns/flask/PYSEC-2023-62.yaml","https://www.debian.org/security/2023/dsa-5442","https://lists.debian.org/debian-lts-announce/2023/08/msg00024.html","https://security.netapp.com/advisory/ntap-20230818-0006","https://github.com/advisories/GHSA-m2qf-hxjv-5gpq"],"source_kind":"github","identifiers":["GHSA-m2qf-hxjv-5gpq","CVE-2023-30861"],"repository_url":"https://github.com/pallets/flask","blast_radius":44.15909967006318,"packages":[{"versions":[{"first_patched_version":"2.3.2","vulnerable_version_range":"\u003e= 2.3.0, \u003c 2.3.2"},{"first_patched_version":"2.2.5","vulnerable_version_range":"\u003c 2.2.5"}],"ecosystem":"pypi","package_name":"flask"}],"created_at":"2023-05-01T20:03:18.993Z","updated_at":"2024-09-20T17:51:02.000Z","epss_percentage":0.00199,"epss_percentile":0.42561},{"uuid":"GSA_kwCzR0hTQS00Z3JnLXc2djgtYzI4Z84ABHzW","url":"https://github.com/advisories/GHSA-4grg-w6v8-c28g","title":"Flask uses fallback key instead of current signing key","description":"In Flask 3.1.0, the way fallback key configuration was handled resulted in the last fallback key being used for signing, rather than the current signing key.\n\nSigning is provided by the `itsdangerous` library. A list of keys can be passed, and it expects the last (top) key in the list to be the most recent key, and uses that for signing. Flask was incorrectly constructing that list in reverse, passing the signing key first.\n\nSites that have opted-in to use key rotation by setting `SECRET_KEY_FALLBACKS` are likely to unexpectedly be signing their sessions with stale keys, and their transition to fresher keys will be impeded. Sessions are still signed, so this would not cause any sort of data integrity loss.","origin":"UNSPECIFIED","severity":"LOW","published_at":"2025-05-13T20:25:26.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":1.8,"cvss_vector":"CVSS:4.0/AV:L/AC:L/AT:P/PR:H/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N","references":["https://github.com/pallets/flask/security/advisories/GHSA-4grg-w6v8-c28g","https://nvd.nist.gov/vuln/detail/CVE-2025-47278","https://github.com/pallets/flask/commit/73d6504063bfa00666a92b07a28aaf906c532f09","https://github.com/pallets/flask/releases/tag/3.1.1","https://github.com/advisories/GHSA-4grg-w6v8-c28g"],"source_kind":"github","identifiers":["GHSA-4grg-w6v8-c28g","CVE-2025-47278"],"repository_url":"https://github.com/pallets/flask","blast_radius":9.136365448978589,"packages":[{"versions":[{"first_patched_version":"3.1.1","vulnerable_version_range":"= 3.1.0"}],"ecosystem":"pypi","package_name":"flask"}],"created_at":"2025-05-13T21:08:32.435Z","updated_at":"2025-05-13T20:25:26.000Z","epss_percentage":0.00016,"epss_percentile":0.02149},{"uuid":"MDE2OlNlY3VyaXR5QWR2aXNvcnlHSFNBLTU2MmMtNXI5NC14aDk3","url":"https://github.com/advisories/GHSA-562c-5r94-xh97","title":"Flask is vulnerable to Denial of Service via incorrect encoding of JSON data","description":"The Pallets Project flask version Before 0.12.3 contains a CWE-20: Improper Input Validation vulnerability in flask that can result in Large amount of memory usage possibly leading to denial of service. This attack appear to be exploitable via Attacker provides JSON data in incorrect encoding. This vulnerability appears to have been fixed in 0.12.3.","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2018-08-23T19:10:40.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":8.7,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N","references":["https://nvd.nist.gov/vuln/detail/CVE-2018-1000656","https://github.com/pallets/flask/pull/2691","https://github.com/advisories/GHSA-562c-5r94-xh97","https://github.com/pallets/flask/releases/tag/0.12.3","https://lists.debian.org/debian-lts-announce/2019/08/msg00025.html","https://github.com/pallets/flask/commit/b178e89e4456e777b1a7ac6d7199052d0dfdbbbe","https://github.com/pypa/advisory-database/tree/main/vulns/flask/PYSEC-2018-66.yaml","https://security.netapp.com/advisory/ntap-20190221-0001","https://usn.ubuntu.com/4378-1"],"source_kind":"github","identifiers":["GHSA-562c-5r94-xh97","CVE-2018-1000656"],"repository_url":"https://github.com/pallets/flask","blast_radius":44.15909967006318,"packages":[{"versions":[{"first_patched_version":"0.12.3","vulnerable_version_range":"\u003c 0.12.3"}],"ecosystem":"pypi","package_name":"flask"}],"created_at":"2022-12-21T16:13:36.498Z","updated_at":"2024-09-20T20:16:30.000Z","epss_percentage":0.00567,"epss_percentile":0.67317},{"uuid":"MDE2OlNlY3VyaXR5QWR2aXNvcnlHSFNBLTV3djUtNHZwZi1wajZt","url":"https://github.com/advisories/GHSA-5wv5-4vpf-pj6m","title":"Pallets Project Flask is vulnerable to Denial of Service via Unexpected memory usage","description":"The Pallets Project Flask before 1.0 is affected by unexpected memory usage. The impact is denial of service. The attack vector is crafted encoded JSON data. The fixed version is 1. NOTE this may overlap CVE-2018-1000656.","origin":"UNSPECIFIED","severity":"HIGH","published_at":"2019-07-19T16:12:46.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":8.7,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N","references":["https://nvd.nist.gov/vuln/detail/CVE-2019-1010083","https://github.com/advisories/GHSA-5wv5-4vpf-pj6m","https://github.com/pypa/advisory-database/tree/main/vulns/flask/PYSEC-2019-179.yaml","https://www.palletsprojects.com/blog/flask-1-0-released"],"source_kind":"github","identifiers":["GHSA-5wv5-4vpf-pj6m","CVE-2019-1010083"],"repository_url":null,"blast_radius":44.15909967006318,"packages":[{"versions":[{"first_patched_version":"1.0","vulnerable_version_range":"\u003c 1.0"}],"ecosystem":"pypi","package_name":"flask"}],"created_at":"2022-12-21T16:13:28.800Z","updated_at":"2024-09-20T21:04:59.000Z","epss_percentage":0.00277,"epss_percentile":0.50644}],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/flask","docker_dependents_count":4717,"docker_downloads_count":1615993923,"usage_url":"https://repos.ecosyste.ms/usage/pypi/flask","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/flask/dependencies","status":null,"funding_links":["https://github.com/sponsors/pallets","https://palletsprojects.com/donate","https://tidelift.com/funding/github/pypi/Flask"],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/flask/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/flask/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/flask/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/flask/related_packages","maintainers":[{"uuid":"Pallets Projects","login":"Pallets Projects","name":null,"email":null,"url":null,"packages_count":10,"html_url":"https://pypi.org/user/Pallets Projects/","role":null,"created_at":"2023-04-13T22:15:32.412Z","updated_at":"2023-04-13T22:15:32.412Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/Pallets%20Projects/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690322,"maintainers_count":292759,"namespaces_count":0,"keywords_count":228590,"github":"pypi","metadata":{"funded_packages_count":48950},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-06T05:32:09.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":3333,"unique_repositories_count_past_30_days":43,"recent_issues":[{"uuid":"4567378429","node_id":"PR_kwDOQIiWRs7hlHZO","number":277,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-03T23:07:03.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-02T00:37:40.000Z","updated_at":"2026-06-03T23:07:05.000Z","time_to_close":167363,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":18,"packages":[{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"python-json-logger","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-provider-ofrep","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-api","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-sdk","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.81.0"},{"name":"openfeature-provider-flagd","old_version":"0.2.3","new_version":"0.4.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-distro","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 18 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.81.0` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n\nBumps the pip-production-dependencies group with 13 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 8 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.81.0` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n\n\nUpdates `flask` from 3.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.2...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 4.0.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/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\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/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.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 `openfeature-provider-ofrep` from 0.2.0 to 0.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-ofrep's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-ofrep: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eofrep:\u003c/strong\u003e handle 401, 403, 404 and 5xx errors explicitly and add tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/346\"\u003e#346\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/7e18bc120ee1a310c28c96aac5b608941889d756\"\u003e7e18bc1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\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/open-feature/python-sdk-contrib/commit/4ef10198f1dad5887056f453340f6fb3c9dabc83\"\u003e\u003ccode\u003e4ef1019\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-ofrep 0.3.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-hooks-opentelemetry` from 0.2.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-hooks-opentelemetry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003e0.3.1\u003c/a\u003e (2026-02-17)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e2a2127d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2025-12-16)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emigrate to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/293\"\u003e#293\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/9590554be4c8a7f77b0c0f20d6b48076c9870f52\"\u003e9590554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a2ec682a709a4721f8362cfa6a9e6037937761ee\"\u003ea2ec682\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/open-feature/python-sdk-contrib/commit/83926dea688eac265405b79c2ec00c9d08c8862e\"\u003e\u003ccode\u003e83926de\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-hooks-opentelemetry 0.3.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e\u003ccode\u003e2a2127d\u003c/code\u003e\u003c/a\u003e fix: Align TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c08b414007f6ce10dcb83249142f054b6d6043d6\"\u003e\u003ccode\u003ec08b414\u003c/code\u003e\u003c/a\u003e chore: align unleash pyproject.toml to others (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/8239b836a25663e0030b3891d0140cb365798a37\"\u003e\u003ccode\u003e8239b83\u003c/code\u003e\u003c/a\u003e feat(provider): add \u003ccode\u003eaws-ssm\u003c/code\u003e provider (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e\u003ccode\u003e61add22\u003c/code\u003e\u003c/a\u003e fix: replace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a835c77f10c82af2157ea15be0ffae7bad79b8ce\"\u003e\u003ccode\u003ea835c77\u003c/code\u003e\u003c/a\u003e chore: relax \u003ccode\u003etypes-requests\u003c/code\u003e and update \u003ccode\u003egrpcio\u003c/code\u003e version constraints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a345ef9f1ea3333e49a173553a9098f5db6746a7\"\u003e\u003ccode\u003ea345ef9\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.2.7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b9c164a2342d101e23e062a81558f02fe0a38c0b\"\u003e\u003ccode\u003eb9c164a\u003c/code\u003e\u003c/a\u003e fix(security): update dependency protobuf to v6.33.5 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2feabd5d70bef2de6661fadf3d74238991a27466\"\u003e\u003ccode\u003e2feabd5\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-unleash 0.1.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/dcb8fadfbc0263e68c381681b5b92cb5fea2dc0d\"\u003e\u003ccode\u003edcb8fad\u003c/code\u003e\u003c/a\u003e chore: add component owners\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-api` from 1.38.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.38.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-exporter-otlp-proto-grpc` from 1.38.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.38.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-jinja2` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-jinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: update auto-instrumentation to re-inject\ninstrumentation path after init\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4469\"\u003e#4469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add Database client operation duration\nand returned rows metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4481\"\u003e#4481\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove redundant \u003ccode\u003epylint: disable=attribute-defined-outside-init\u003c/code\u003e comments\nand add rule to global \u003ccode\u003e.pylintrc\u003c/code\u003e disable list\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epylint\u003c/code\u003e to \u003ccode\u003e4.0.5\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4244\"\u003e#4244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Use \u003ccode\u003eLogRecord.getMessage()\u003c/code\u003e to\nformat and extract each log record's body text to more closely match the\nexpected usage of the logging system. As a result, all OTel log record bodies\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\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/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-requests` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-requests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: update auto-instrumentation to re-inject\ninstrumentation path after init\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4469\"\u003e#4469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add Database client operation duration\nand returned rows metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4481\"\u003e#4481\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove redundant \u003ccode\u003epylint: disable=attribute-defined-outside-init\u003c/code\u003e comments\nand add rule to global \u003ccode\u003e.pylintrc\u003c/code\u003e disable list\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epylint\u003c/code\u003e to \u003ccode\u003e4.0.5\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4244\"\u003e#4244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Use \u003ccode\u003eLogRecord.getMessage()\u003c/code\u003e to\nformat and extract each log record's body text to more closely match the\nexpected usage of the logging system. As a result, all OTel log record bodies\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\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/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-system-metrics` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-system-metrics's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: update auto-instrumentation to re-inject\ninstrumentation path after init\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4469\"\u003e#4469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add Database client operation duration\nand returned rows metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4481\"\u003e#4481\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove redundant \u003ccode\u003epylint: disable=attribute-defined-outside-init\u003c/code\u003e comments\nand add rule to global \u003ccode\u003e.pylintrc\u003c/code\u003e disable list\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epylint\u003c/code\u003e to \u003ccode\u003e4.0.5\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4244\"\u003e#4244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Use \u003ccode\u003eLogRecord.getMessage()\u003c/code\u003e to\nformat and extract each log record's body text to more closely match the\nexpected usage of the logging system. As a result, all OTel log record bodies\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\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/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-urllib3` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-urllib3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: update auto-instrumentation to re-inject\ninstrumentation path after init\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4469\"\u003e#4469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add Database client operation duration\nand returned rows metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4481\"\u003e#4481\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove redundant \u003ccode\u003epylint: disable=attribute-defined-outside-init\u003c/code\u003e comments\nand add rule to global \u003ccode\u003e.pylintrc\u003c/code\u003e disable list\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epylint\u003c/code\u003e to \u003ccode\u003e4.0.5\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4244\"\u003e#4244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Use \u003ccode\u003eLogRecord.getMessage()\u003c/code\u003e to\nformat and extract each log record's body text to more closely match the\nexpected usage of the logging system. As a result, all OTel log record bodies\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\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/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-sdk` from 1.38.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.38.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-semantic-conventions` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-semantic-conventions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-logging` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-logging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: update auto-instrumentation to re-inject\ninstrumentation path after init\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4469\"\u003e#4469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add Database client operation duration\nand returned rows metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4481\"\u003e#4481\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove redundant \u003ccode\u003epylint: disable=attribute-defined-outside-init\u003c/code\u003e comments\nand add rule to global \u003ccode\u003e.pylintrc\u003c/code\u003e disable list\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epylint\u003c/code\u003e to \u003ccode\u003e4.0.5\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4244\"\u003e#4244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Use \u003ccode\u003eLogRecord.getMessage()\u003c/code\u003e to\nformat and extract each log record's body text to more closely match the\nexpected usage of the logging system. As a result, all OTel log record bodies\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\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/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.81.0\n\nUpdates `openfeature-provider-flagd` from 0.2.3 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-flagd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-...\n\n_Description has been truncated_","html_url":"https://github.com/monoscope-tech/oteldemo/pull/277","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/monoscope-tech%2Foteldemo/issues/277","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/277/packages"},{"uuid":"4558441360","node_id":"PR_kwDOStLPh87hIS_a","number":4,"state":"open","title":"chore: bump flask from 3.0.3 to 3.1.3 in /ressources","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-31T17:49:17.000Z","updated_at":"2026-05-31T17:49:18.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore","packages":[{"name":"flask","old_version":"3.0.3","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":"/ressources","ecosystem":"pip"},"body":"Bumps [flask](https://github.com/pallets/flask) from 3.0.3 to 3.1.3.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.3...3.1.3\"\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=flask\u0026package-manager=pip\u0026previous-version=3.0.3\u0026new-version=3.1.3)](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/alderichoarau/tp-github-action/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/alderichoarau%2Ftp-github-action/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"},{"uuid":"4556658967","node_id":"PR_kwDOSoiKJM7hDBVz","number":2,"state":"open","title":"build(deps): bump flask from 3.0.0 to 3.1.3 in /noise_server in the pip group across 1 directory","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-31T05:24:21.000Z","updated_at":"2026-05-31T05:26:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"flask","old_version":"3.0.0","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":"/noise_server in the pip group across 1 directory","ecosystem":"pip"},"body":"Bumps the pip group with 1 update in the /noise_server directory: [flask](https://github.com/pallets/flask).\n\nUpdates `flask` from 3.0.0 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.3\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/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.0...3.1.3\"\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=flask\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.3)](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\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/houseofmates/createSMR/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/houseofmates/createSMR/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/houseofmates%2FcreateSMR/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"},{"uuid":"4556572184","node_id":"PR_kwDOSC-byM7hCxQs","number":303,"state":"closed","title":"chore(deps): bump flask from 3.0.0 to 3.1.3 in /python-ai-service","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-31T04:34:49.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-31T04:33:47.000Z","updated_at":"2026-05-31T04:36:36.000Z","time_to_close":62,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"flask","old_version":"3.0.0","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":"/python-ai-service","ecosystem":"pip"},"body":"Bumps [flask](https://github.com/pallets/flask) from 3.0.0 to 3.1.3.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.3\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/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.0...3.1.3\"\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=flask\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.3)](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/souma9830/SnapPass-AI/pull/303","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/souma9830%2FSnapPass-AI/issues/303","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/303/packages"},{"uuid":"4521342223","node_id":"PR_kwDOPcZKGs7fQ0fP","number":1093,"state":"open","title":"build(deps): Update flask requirement from \u003c4.0,\u003e=3.0 to \u003e=3.1.3,\u003c4.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-26T04:23:43.000Z","updated_at":"2026-05-26T04:23:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Update","packages":[{"name":"flask","old_version":"\u003c4.0,\u003e=3.0","new_version":"\u003e=3.1.3,\u003c4.0","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.0...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/akshithkonda1/ryuzen-ai/pull/1093","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshithkonda1%2Fryuzen-ai/issues/1093","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1093/packages"},{"uuid":"4514476030","node_id":"PR_kwDOSUsJ5s7e6kjO","number":19,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T05:22:28.000Z","updated_at":"2026-05-25T05:24:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/Sneriko/ultralytics/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sneriko%2Fultralytics/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"},{"uuid":"4514452599","node_id":"PR_kwDOSGHIPc7e6f1a","number":11,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T05:16:17.000Z","updated_at":"2026-05-25T05:16:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/IcyCongee/ultralytics_yolo26_rknn/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/IcyCongee%2Fultralytics_yolo26_rknn/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"},{"uuid":"4514439073","node_id":"PR_kwDOR217F87e6dMs","number":14,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T05:12:53.000Z","updated_at":"2026-05-25T05:13:47.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/waylans/MDAD/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/waylans%2FMDAD/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"},{"uuid":"4514428055","node_id":"PR_kwDORoCGyM7e6bCm","number":11,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T05:10:00.000Z","updated_at":"2026-05-25T05:10:01.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/tomepay/Ultralytics-Attention-Hub/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomepay%2FUltralytics-Attention-Hub/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"},{"uuid":"4514421266","node_id":"PR_kwDORbrIm87e6Zpr","number":12,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T05:08:09.000Z","updated_at":"2026-05-25T05:08:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/WoodenDrum/yolo_zeroshot/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoodenDrum%2Fyolo_zeroshot/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"4514379750","node_id":"PR_kwDOPVzNOM7e6RJe","number":22,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T04:58:02.000Z","updated_at":"2026-05-25T04:59:36.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/GroundhogPaul/yolov11_prune_distill_2step/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GroundhogPaul%2Fyolov11_prune_distill_2step/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/packages"},{"uuid":"4512747309","node_id":"PR_kwDOQGy9FM7e1OS3","number":1,"state":"open","title":"Bump the pip group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-24T19:58:20.000Z","updated_at":"2026-05-24T19:58:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":11,"packages":[{"name":"certifi","old_version":"2021.5.30","new_version":"2024.7.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"eventlet","old_version":"0.31.1","new_version":"0.41.0","repository_url":"https://github.com/eventlet/eventlet"},{"name":"flask","old_version":"2.0.1","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"gunicorn","old_version":"20.1.0","new_version":"22.0.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"idna","old_version":"3.2","new_version":"3.15","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.0.1","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"python-socketio","old_version":"5.4.0","new_version":"5.14.0","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"requests","old_version":"2.26.0","new_version":"2.33.0","repository_url":"https://github.com/psf/requests"},{"name":"urllib3","old_version":"1.26.6","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"2.0.1","new_version":"3.1.6","repository_url":"https://github.com/pallets/werkzeug"},{"name":"zipp","old_version":"3.5.0","new_version":"3.19.1","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 11 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [certifi](https://github.com/certifi/python-certifi) | `2021.5.30` | `2024.7.4` |\n| [eventlet](https://github.com/eventlet/eventlet) | `0.31.1` | `0.41.0` |\n| [flask](https://github.com/pallets/flask) | `2.0.1` | `3.1.3` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `20.1.0` | `22.0.0` |\n| [idna](https://github.com/kjd/idna) | `3.2` | `3.15` |\n| [jinja2](https://github.com/pallets/jinja) | `3.0.1` | `3.1.6` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.4.0` | `5.14.0` |\n| [requests](https://github.com/psf/requests) | `2.26.0` | `2.33.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `1.26.6` | `2.7.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `2.0.1` | `3.1.6` |\n| [zipp](https://github.com/jaraco/zipp) | `3.5.0` | `3.19.1` |\n\n\nUpdates `certifi` from 2021.5.30 to 2024.7.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/bd8153872e9c6fc98f4023df9c2deaffea2fa463\"\u003e\u003ccode\u003ebd81538\u003c/code\u003e\u003c/a\u003e 2024.07.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/06a2cbf21f345563dde6c28b60e29d57e9b210b3\"\u003e\u003ccode\u003e06a2cbf\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 6.0.5 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/13bba02b72bac97c432c277158bc04b4d2a6bc23\"\u003e\u003ccode\u003e13bba02\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.1.6 to 4.1.7 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e8abcd0e62b334c164b95d49fcabdc9ecbca0554\"\u003e\u003ccode\u003ee8abcd0\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.8.14 to 1.9.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/292\"\u003e#292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/124f4adf171e15cd9a91a8b6e0325ecc97be8fe1\"\u003e\u003ccode\u003e124f4ad\u003c/code\u003e\u003c/a\u003e 2024.06.02 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/291\"\u003e#291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c2196ce5d6ee675b27755a19948480a7823e2c6a\"\u003e\u003ccode\u003ec2196ce\u003c/code\u003e\u003c/a\u003e --- (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fefdeec7588ff1c05214b85a552afcad5fdb51b2\"\u003e\u003ccode\u003efefdeec\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.1.4 to 4.1.5 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3c5fb1560b826a7f83f1f9750173ff766492c9cf\"\u003e\u003ccode\u003e3c5fb15\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.1.6 to 4.1.7 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4a9569a3eb58db8548536fc16c5c5c7af946a5b1\"\u003e\u003ccode\u003e4a9569a\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.1.2 to 4.1.4 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1fc808626a895a916b1e4c2b63abae6c5eafdbe3\"\u003e\u003ccode\u003e1fc8086\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 6.0.4 to 6.0.5 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2021.05.30...2024.07.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `eventlet` from 0.31.1 to 0.41.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eventlet/eventlet/blob/master/NEWS\"\u003eeventlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.41.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to 3.14 for testing (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1086\"\u003e#1086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop 3.9 support (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1085\"\u003e#1085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMore visible deprecation (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.40.4\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove legacy setuptools configuration files (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1072\"\u003e#1072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd 3.14 to supported versions (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit warning on startup that eventlet is deprecated (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1065\"\u003e#1065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Python 3.14 on macOS (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWorkaround for \u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1068\"\u003e#1068\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.40.3\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e[SECURITY] Fix request smuggling vulnerability by discarding trailers (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1062\"\u003e#1062\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.40.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility issues identified with Python 3.14 on Linux (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1058\"\u003e#1058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake database removal safer with IF EXISTS (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare jobs and CI/CD for python 3.14 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.40.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e[fix] \u0026quot;Fix\u0026quot; fork() so it \u0026quot;works\u0026quot; on Python 3.13, and \u0026quot;works\u0026quot; better on older Python versions (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1047\"\u003e#1047\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eBehavior change: threads created by eventlet.green.threading.Thread and threading.Thead will be visible across both modules if monkey patching was used. Previously each module would only list threads created in that module.\u003c/li\u003e\n\u003cli\u003eBug fix: after fork(), greenlet threads are correctly listed in threading.enumerate() if monkey patching was used. You should not use fork()-without-execve().\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e[fix] Fix patching of removed URLopener class in Python 3.14 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[fix] ReferenceError except while count rlock (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[fix] Replace deprecated datetime.utcfromtimestamp (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[fix][env] Remove duplicate steps (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[fix] Replace deprecated datetime.datetime.utcnow (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.40.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e[fix] Fix ssl test when linking against openssl 3.5 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop support Python 3.8 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[doc] Various doc updates (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/981\"\u003e#981\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[env] Drop PyPy support (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1035\"\u003e#1035\u003c/a\u003e \u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.39.1\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/5ec4b6dcd2e5bb41c63743bd59dedbce4a9c5381\"\u003e\u003ccode\u003e5ec4b6d\u003c/code\u003e\u003c/a\u003e Update changelog for version 0.41.0 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/6de7dbbd71585e34ccbec99d220606febb286bb8\"\u003e\u003ccode\u003e6de7dbb\u003c/code\u003e\u003c/a\u003e Switch to 3.14 for testing, fix problems found along the way. (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1086\"\u003e#1086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/1ea81d9fbf12ce62a818ff9125ca14593c5506a7\"\u003e\u003ccode\u003e1ea81d9\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1085\"\u003e#1085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/62662af7002b531bed608c7dd73d81943ff638c9\"\u003e\u003ccode\u003e62662af\u003c/code\u003e\u003c/a\u003e More visible deprecation (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/f3254a1b401714f6dfdffa5045d25a4d36c76c06\"\u003e\u003ccode\u003ef3254a1\u003c/code\u003e\u003c/a\u003e Update changelog for version 0.40.4 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/8cb20296f3455a1836cdbcbf1d3545666ee7f867\"\u003e\u003ccode\u003e8cb2029\u003c/code\u003e\u003c/a\u003e Remove legacy setuptools configuration files (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1072\"\u003e#1072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/220f82d843c0a57c267e77f0cc437e0b43be1cca\"\u003e\u003ccode\u003e220f82d\u003c/code\u003e\u003c/a\u003e add 3.14 to supported versions (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/01a3da5f9b552c7d58eb6de829d33f522d4b04cf\"\u003e\u003ccode\u003e01a3da5\u003c/code\u003e\u003c/a\u003e Emit warning on startup that eventlet is deprecated (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1065\"\u003e#1065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/1b2b959da1257dccd23956fda43d03dc6a28ca16\"\u003e\u003ccode\u003e1b2b959\u003c/code\u003e\u003c/a\u003e Fix Python 3.14 on macOS (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/d8bf4659cd8b178949cc2b1485b337d46bae6532\"\u003e\u003ccode\u003ed8bf465\u003c/code\u003e\u003c/a\u003e Workaround for \u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1068\"\u003e#1068\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eventlet/eventlet/compare/v0.31.1...0.41.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 2.0.1 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.3\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/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/2.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 20.1.0 to 22.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGunicorn 22.0 has been released\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eGunicorn 22.0.0 has been released.\u003c/strong\u003e This version fix the numerous security vulnerabilities. You're invited to upgrade asap your own installation.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e22.0.0 - 2024-04-17\r\n===================\r\n\u003cul\u003e\n\u003cli\u003euse \u003ccode\u003eutime\u003c/code\u003e to notify workers liveness\u003c/li\u003e\n\u003cli\u003emigrate setup to pyproject.toml\u003c/li\u003e\n\u003cli\u003efix numerous security vulnerabilities in HTTP parser (closing some request smuggling vectors)\u003c/li\u003e\n\u003cli\u003eparsing additional requests is no longer attempted past unsupported request framing\u003c/li\u003e\n\u003cli\u003eon HTTP versions \u0026lt; 1.1 support for chunked transfer is refused (only used in exploits)\u003c/li\u003e\n\u003cli\u003erequests conflicting configured or passed SCRIPT_NAME now produce a verbose error\u003c/li\u003e\n\u003cli\u003eTrailer fields are no longer inspected for headers indicating secure scheme\u003c/li\u003e\n\u003cli\u003esupport Python 3.12\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e** Breaking changes **\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eminimum version is Python 3.7\u003c/li\u003e\n\u003cli\u003ethe limitations on valid characters in the HTTP method have been bounded to Internet Standards\u003c/li\u003e\n\u003cli\u003erequests specifying unsupported transfer coding (order) are refused by default (rare)\u003c/li\u003e\n\u003cli\u003eHTTP methods are no longer casefolded by default (IANA method registry contains none affected)\u003c/li\u003e\n\u003cli\u003eHTTP methods containing the number sign (#) are no longer accepted by default (rare)\u003c/li\u003e\n\u003cli\u003eHTTP versions \u0026lt; 1.0 or \u0026gt;= 2.0 are no longer accepted by default (rare, only HTTP/1.1 is supported)\u003c/li\u003e\n\u003cli\u003eHTTP versions consisting of multiple digits or containing a prefix/suffix are no longer accepted\u003c/li\u003e\n\u003cli\u003eHTTP header field names Gunicorn cannot safely map to variables are silently dropped, as in other software\u003c/li\u003e\n\u003cli\u003eHTTP headers with empty field name are refused by default (no legitimate use cases, used in exploits)\u003c/li\u003e\n\u003cli\u003erequests with both Transfer-Encoding and Content-Length are refused by default (such a message might indicate an attempt to perform request smuggling)\u003c/li\u003e\n\u003cli\u003eempty transfer codings are no longer permitted (reportedly seen with really old \u0026amp; broken proxies)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e** SECURITY **\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix CVE-2024-1135\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003col\u003e\n\u003cli\u003eDocumentation is available there: \u003ca href=\"https://docs.gunicorn.org/en/stable/news.html\"\u003ehttps://docs.gunicorn.org/en/stable/news.html\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePackages: \u003ca href=\"https://pypi.org/project/gunicorn/\"\u003ehttps://pypi.org/project/gunicorn/\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2\u003eGunicorn 21.2.0 has been released\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eGunicorn 21.2.0 has been released.\u003c/strong\u003e This version fix the issue introduced in the threaded worker.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e21.2.0 - 2023-07-19\r\n===================\r\nfix thread worker: revert change considering connection as idle .\r\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/f63d59e4d73a8ee28748d2c700fb81c8780bc419\"\u003e\u003ccode\u003ef63d59e\u003c/code\u003e\u003c/a\u003e bump to 22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/4ac81e0a1037ba5b570323be7430e09caa233e38\"\u003e\u003ccode\u003e4ac81e0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3175\"\u003e#3175\u003c/a\u003e from e-kwsm/typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/401cecfaed85d79236c7a9a1f7d8946b01c466fc\"\u003e\u003ccode\u003e401cecf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3179\"\u003e#3179\u003c/a\u003e from dhdaines/exclude-eventlet-0360\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/0243ec39ef4fc1b479ff4e1659e165f0b980b571\"\u003e\u003ccode\u003e0243ec3\u003c/code\u003e\u003c/a\u003e fix(deps): exclude eventlet 0.36.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/628a0bcb61ef3a211d67dfd68ad1ba161cccb3b8\"\u003e\u003ccode\u003e628a0bc\u003c/code\u003e\u003c/a\u003e chore: fix typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/88fc4a43152039c28096c8ba3eeadb3fbaa4aff9\"\u003e\u003ccode\u003e88fc4a4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3131\"\u003e#3131\u003c/a\u003e from pajod/patch-py12-rebased\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/deae2fc4c5f93bfce59be5363055d4cd4ab1b0b6\"\u003e\u003ccode\u003edeae2fc\u003c/code\u003e\u003c/a\u003e CI: back off the agressive timeout\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/f4703824c323fe6867dce0e2f11013b8de319353\"\u003e\u003ccode\u003ef470382\u003c/code\u003e\u003c/a\u003e docs: promise 3.12 compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5e30bfa6b1a3e1f2bde7feb514d1734d28f39231\"\u003e\u003ccode\u003e5e30bfa\u003c/code\u003e\u003c/a\u003e add changelog to project.urls (updated for PEP621)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/481c3f9522edc58806a3efc5b49be4f202cc7700\"\u003e\u003ccode\u003e481c3f9\u003c/code\u003e\u003c/a\u003e remove setup.cfg - overridden by pyproject.toml\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/20.1.0...22.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.2 to 3.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.13\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.12\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.9\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for certain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no longer testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.8\"\u003ehttps://github.com/kjd/idna/compare/v3.7...v3.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.7\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where specially crafted inputs to encode() could take exceptionally long amount of time to process. [CVE-2024-3651]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Guido Vranken for reporting the issue.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.6...v3.7\"\u003ehttps://github.com/kjd/idna/compare/v3.6...v3.7\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/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.15 (2026-05-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnforce DNS-length cap on individual labels early in \u003ccode\u003echeck_label\u003c/code\u003e,\nshort-circuiting contextual-rule processing for oversized input\nwhile staying compatible with UTS 46 usage.\u003c/li\u003e\n\u003cli\u003eTidy core helpers: hoist bidi category sets to module-level\nfrozensets (avoiding per-codepoint list construction), simplify\nlength checks, and reuse the shared \u003ccode\u003e_unicode_dots_re\u003c/code\u003e from\n\u003ccode\u003eidna.core\u003c/code\u003e in the codec module.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eraise ... from err\u003c/code\u003e for proper exception chaining and\nswitch internal string formatting to f-strings.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eflit_core\u003c/code\u003e 4.x in the build backend.\u003c/li\u003e\n\u003cli\u003eExpand the ruff lint set (flake8-bugbear, flake8-simplify,\npyupgrade, perflint) and apply the surfaced fixes; pin lint CI\nto Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration for GitHub Actions.\u003c/li\u003e\n\u003cli\u003eConvert README and HISTORY from reStructuredText to Markdown.\u003c/li\u003e\n\u003cli\u003eReference CVE-2026-45409 for the 3.14 advisory in place of the\ninitial GHSA identifier.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Felix Yan, Stan Ulbrych, and metsw24-max for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.14 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\nof the CVE-2024-3651 mitigation. [CVE-2026-45409]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Stan Ulbrych for reporting the issue.\u003c/p\u003e\n\u003ch2\u003e3.13 (2026-04-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect classification error for codepoint U+A7F1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12 (2026-04-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0.0.\u003c/li\u003e\n\u003cli\u003eIssue a deprecation warning for the transitional argument.\u003c/li\u003e\n\u003cli\u003eAdded lazy-loading to provide some performance improvements.\u003c/li\u003e\n\u003cli\u003eRemoved vestiges of code related to Python 2 support, including\nsegmentation of data structures specific to Jython.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Rodrigo Nogueira for contributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.11 (2025-10-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/af30a092e158181d0b35ac66dfa813788126bdd8\"\u003e\u003ccode\u003eaf30a09\u003c/code\u003e\u003c/a\u003e Release 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/30314d4628744ca14cf2b5820564e5127a9f86f2\"\u003e\u003ccode\u003e30314d4\u003c/code\u003e\u003c/a\u003e Pre-release 3.15rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05d4b219aa9eddc47371fcbd2000f0301016f3e9\"\u003e\u003ccode\u003e05d4b21\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/237\"\u003e#237\u003c/a\u003e from kjd/convert-docs-to-markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2987fdba1962bbb2358399e0084ba062b98a0bee\"\u003e\u003ccode\u003e2987fdb\u003c/code\u003e\u003c/a\u003e Convert README and HISTORY from reStructuredText to Markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/59fa8002d514bf4a5ce7b58f67b9ec587d53fa9c\"\u003e\u003ccode\u003e59fa800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/236\"\u003e#236\u003c/a\u003e from kjd/dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/def69834ced5d4b3c50439d8b99c4c856ec19ca2\"\u003e\u003ccode\u003edef6983\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bbd8004a797185d8c56bb555cd5c88fde05e0631\"\u003e\u003ccode\u003ebbd8004\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/234\"\u003e#234\u003c/a\u003e from StanFromIreland/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/edd07c05024344a6ccb517414ccb36683aee99fc\"\u003e\u003ccode\u003eedd07c0\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.35.2 to 4.35.2 in the actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5557db030c11bdec50d62aa5f631d705d33ba123\"\u003e\u003ccode\u003e5557db0\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f11746cf4981d25123ef7830d3ee60f07de8ae3d\"\u003e\u003ccode\u003ef11746c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/235\"\u003e#235\u003c/a\u003e from StanFromIreland/patch-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.2...v3.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.0.1 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.4 security release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.4/\"\u003ehttps://pypi.org/project/Jinja2/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\"\u003ehttps://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003exmlattr\u003c/code\u003e filter does not allow keys with \u003ccode\u003e/\u003c/code\u003e solidus, \u003ccode\u003e\u0026gt;\u003c/code\u003e greater-than sign, or \u003ccode\u003e=\u003c/code\u003e equals sign, in addition to disallowing spaces. Regardless of any validation done by Jinja, user input should never be used as keys to this filter, or must be separately validated first. GHSA-h75v-3vvj-5mfj\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 3.1.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-h5c8-rqwp-cp95\"\u003eGHSA-h5c8-rqwp-cp95\u003c/a\u003e. You are affected if you are using \u003ccode\u003exmlattr\u003c/code\u003e and passing user input as attribute keys.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.0.1...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-socketio` from 5.4.0 to 5.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/releases\"\u003epython-socketio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 5.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.12.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.11.4\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.11.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.11.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.7.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.7.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.5.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003epython-socketio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epython-socketio change log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.16.2\u003c/strong\u003e - 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent unnecessary resource allocations \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1574\"\u003e#1574\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/ca140fe44d0ceb3004073645222abec182d8784b\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd zizmor to CI builds \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1570\"\u003e#1570\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/664dc27ec6f34179ed1724430eda3520627fc642\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.16.1\u003c/strong\u003e - 2026-02-06\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse configured JSON module in managers \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1549\"\u003e#1549\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/6229261ae6e8c01e675097242e333ee84587a544\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdmin UI fixes: remove duplicate tasks, report transport upgrades (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/1c2eab13a92fac9e43663eb0b5f099eb1c40ea5b\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch to Furo documentation template (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/add47d8c7abca697a2804141bbf29bfb095f7d5e\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python free-threading to CI \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1554\"\u003e#1554\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/ccdd2004a038ae4b8171a05120c5d0787332f7ee\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.16.0\u003c/strong\u003e - 2025-12-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAddress deprecation warnings (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b235699d9b06564753c570b76055997e9d62a938\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 and 3.9 from CI builds (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/d0728d2f74538762dd551fa9cd0cd1fd5aedfa37\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.15.1\u003c/strong\u003e - 2025-12-16\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore support multiple arguments via pubsub emits \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1540\"\u003e#1540\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c279f26bb8c9887c4ca99d4d81ad331c4844438c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.15.0\u003c/strong\u003e - 2025-11-22\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetry initial Redis connection \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1536\"\u003e#1534\u003c/a\u003e ([commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1\"\u003e#1\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/1e903e173a2d7b04599c4f7f9630c1abbb531fad\"\u003ehttps://github.com/miguelgrinberg/python-socketio/commit/1e903e173a2d7b04599c4f7f9630c1abbb531fad\u003c/a\u003e) [commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/2\"\u003e#2\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5e898a9b93526e6e667767e54c60f4c84589989d\"\u003ehttps://github.com/miguelgrinberg/python-socketio/commit/5e898a9b93526e6e667767e54c60f4c84589989d\u003c/a\u003e))\u003c/li\u003e\n\u003cli\u003eCorrectly regenerate RabbitMQ binding after a connection failure \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1516\"\u003e#1516\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c52e93b4a328d98a968bfbdec0cfd598b73ee913\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eGritty_dev\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eext_type\u003c/code\u003e in the \u003ccode\u003eMsgPackPacket\u003c/code\u003e class \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1521\"\u003e#1521\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/208925344a48485d2cd56e40eb74266c3bcb5311\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport sending \u003ccode\u003ebytesarray\u003c/code\u003es when using pub/sub managers (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/6c9b9974f72e2efdf62407ecab24ee6995448098\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typos in documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1520\"\u003e#1520\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/db3f1c2a0105c30cb833ddfca8f05fe4320468fd\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eLê Nam Khánh\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eImprovements to the logging documentation (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b423d0e38eef559b7e81acb7e32059de305f982c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.3\u003c/strong\u003e - 2025-10-29\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python's native \u003ccode\u003eConnectionRefusedError\u003c/code\u003e exception to reject a connection \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1515\"\u003e#1515\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f3b18bde3f16437b223491d4c3e440ea37105fe3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePush binary data to the aiopika client manager \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1514\"\u003e#1514\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/194e1b7f277b5f72e1de78d3f614e7b8b6c788ac\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.2\u003c/strong\u003e - 2025-10-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore binary message support in message queue setups \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1509\"\u003e#1509\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/bab4a10f48aaae11d7f832ebe5c30ad3f85d31b3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix formatting of client connection error \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1507\"\u003e#1507\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f298c9b54d76ab09ff72935937e1b9575bc45ffd\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd 3.14 and pypy-3.11 CI tasks (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/1f4cd3b025c294f25208ec3c05b5f8df6209e403\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove documentation of the \u003ccode\u003eBaseManager.get_participants()\u003c/code\u003e method (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/33722a0d96036f005188b07b8b46a5ef091fe65f\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.1\u003c/strong\u003e - 2025-10-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore support for \u003ccode\u003erediss://\u003c/code\u003e URLs, and add support for \u003ccode\u003evalkeys://\u003c/code\u003e as well (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/6e2d0de12bb4e4a99fdfc30bed0706ded620822c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Redis connections using unix sockets \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1503\"\u003e#1503\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/a8deb3a8f3ee51d75c124157efa7fc9289fd592b\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eDarren Chang\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.0\u003c/strong\u003e - 2025-09-30\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/miguelgrinberg/python-socketio/commit/400200e00625a49796b84baa44a09cd711fabe50\"\u003e\u003ccode\u003e400200e\u003c/code\u003e\u003c/a\u003e Release 5.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/53f6be094257ed81476b0e212c8cddd6d06ca39a\"\u003e\u003ccode\u003e53f6be0\u003c/code\u003e\u003c/a\u003e Replace pickle with json (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1502\"\u003e#1502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/a59c6f520059eb095ab4472e5192ce3e486875d9\"\u003e\u003ccode\u003ea59c6f5\u003c/code\u003e\u003c/a\u003e Fix: SimpleClient.call does not raise TimeoutError on timeout (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1501\"\u003e#1501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f61e0bec3750a83de619db9b779f9d93e449eade\"\u003e\u003ccode\u003ef61e0be\u003c/code\u003e\u003c/a\u003e wait for client to end background tasks on disconnect (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1500\"\u003e#1500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/23556fb3dcb37074020494df40fb4495d47e7efe\"\u003e\u003ccode\u003e23556fb\u003c/code\u003e\u003c/a\u003e Fixed transport property of the simple clients to be a string as documented (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/e59acf146550d5c07f530a4766dfdfffda21e20c\"\u003e\u003ccode\u003ee59acf1\u003c/code\u003e\u003c/a\u003e Address failures of test suite on Mac (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1497\"\u003e#1497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/36a89226a2fb18f876dcba48125a8c51904586ec\"\u003e\u003ccode\u003e36a8922\u003c/code\u003e\u003c/a\u003e Add support for valkey in the Redis client managers (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1488\"\u003e#1488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5dc2aea077469ad318e47b28a84845c5efb6bdcf\"\u003e\u003ccode\u003e5dc2aea\u003c/code\u003e\u003c/a\u003e keep track of which namespaces failed to connect (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1496\"\u003e#1496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b3da354ed9eb46c0fb847c628b379ccae475a970\"\u003e\u003ccode\u003eb3da354\u003c/code\u003e\u003c/a\u003e Add message queue deployment recommendations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/3625fe821debf33e5430bff6375ec85056a5d95f\"\u003e\u003ccode\u003e3625fe8\u003c/code\u003e\u003c/a\u003e Bump eventlet from 0.35.2 to 0.40.3 in /examples/server/wsgi (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1491\"\u003e#1491\u003c/a\u003e) #nolog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/compare/v5.4.0...v5.14.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.26.0 to 2.33.0\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.33.0\u003c/h2\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that uses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report any gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts contents to a non-deterministic location to prevent malicious file replacement. This does not affect default usage of Requests, only applications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause malformed authentication to be applied to Requests on Python 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\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/M0d3v1\"\u003e\u003ccode\u003e@​M0d3v1\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6865\"\u003epsf/requests#6865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aminvakil\"\u003e\u003ccode\u003e@​aminvakil\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7220\"\u003epsf/requests#7220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/E8Price\"\u003e\u003ccode\u003e@​E8Price\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6960\"\u003epsf/requests#6960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7244\"\u003epsf/requests#7244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magsen\"\u003e\u003ccode\u003e@​magsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6553\"\u003epsf/requests#6553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7227\"\u003epsf/requests#7227\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#2330-2026-03-25\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that\nuses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report\nany gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts\ncontents to a non-deterministic location to prevent malicious file\nreplacement. This does not affect default usage of Requests, only\napplications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause\nmalformed authentication to be applied to Requests on\nPython 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/bc04dfd6dad4cb02cd92f5daa81eb562d280a761\"\u003e\u003ccode\u003ebc04dfd\u003c/code\u003e\u003c/a\u003e v2.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/66d21cb07bd6255b1280291c4fafb71803cdb3b7\"\u003e\u003ccode\u003e66d21cb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/8b9bc8fc0f63be84602387913c4b689f19efd028\"\u003e\u003ccode\u003e8b9bc8f\u003c/code\u003e\u003c/a\u003e Move badges to top of README (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7293\"\u003e#7293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e331a288f369973f5de0ec8901c94cae4fa87286\"\u003e\u003ccode\u003ee331a28\u003c/code\u003e\u003c/a\u003e Remove unused extraction call (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7292\"\u003e#7292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/753fd08c5eacce0aa0df73fe47e49525c67e0a29\"\u003e\u003ccode\u003e753fd08\u003c/code\u003e\u003c/a\u003e docs: fix FAQ grammar in httplib2 example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/774a0b837a194ee885d4fdd9ca947900cc3daf71\"\u003e\u003ccode\u003e774a0b8\u003c/code\u003e\u003c/a\u003e docs(socks): same block as other sections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/9c72a41bec8597f948c9d8caa5dc3f12273b3303\"\u003e\u003ccode\u003e9c72a41\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 4.33.0 to 4.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/ebf71906798ec82f34e07d3168f8b8aecaf8a3be\"\u003e\u003ccode\u003eebf7190\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 4.32.0 to 4.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0e4ae38f0c93d4f92a96c774bd52c069d12a4798\"\u003e\u003ccode\u003e0e4ae38\u003c/code\u003e\u003c/a\u003e docs: exclude Response.is_permanent_redirect from API docs (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7244\"\u003e#7244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d568f47278492e630cc990a259047c67991d007a\"\u003e\u003ccode\u003ed568f47\u003c/code\u003e\u003c/a\u003e docs: clarify Quickstart POST example (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6960\"\u003e#6960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.26.0...v2.33.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 1.26.6 to 2.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable m...\n\n_Description has been truncated_","html_url":"https://github.com/thaliamontreux/OvenSpace/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/thaliamontreux%2FOvenSpace/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"},{"uuid":"4507595607","node_id":"PR_kwDOSlnBM87el4HE","number":11,"state":"open","title":"chore(deps): bump the python-minor-patch group in /backend with 12 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-23T09:09:03.000Z","updated_at":"2026-05-23T09:09:04.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":12,"packages":[{"name":"flask","old_version":"3.1.0","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"flask-jwt-extended","old_version":"4.7.1","new_version":"4.7.4","repository_url":"https://github.com/vimalloc/flask-jwt-extended"},{"name":"google-auth","old_version":"2.30.0","new_version":"2.53.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"requests","old_version":"2.32.3","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"bleach","old_version":"6.1.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.8.2","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.3.4","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"flask-compress","old_version":"1.15","new_version":"1.24","repository_url":"https://github.com/colour-science/flask-compress"},{"name":"reportlab","old_version":"4.2.5","new_version":"4.5.1"},{"name":"google-generativeai","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/google/generative-ai-python"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the python-minor-patch group in /backend with 12 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.3` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.8` |\n| [flask-jwt-extended](https://github.com/vimalloc/flask-jwt-extended) | `4.7.1` | `4.7.4` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.30.0` | `2.53.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.34.2` |\n| [bleach](https://github.com/mozilla/bleach) | `6.1.0` | `6.3.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.2.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.3.4` | `2.14.1` |\n| [flask-compress](https://github.com/colour-science/flask-compress) | `1.15` | `1.24` |\n| [reportlab](https://www.reportlab.com/) | `4.2.5` | `4.5.1` |\n| [google-generativeai](https://github.com/google/generative-ai-python) | `0.8.5` | `0.8.6` |\n\nUpdates `flask` from 3.1.0 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.0...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `werkzeug` from 3.1.3 to 3.1.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/releases\"\u003ewerkzeug's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.8\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.8 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.8/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.8/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-8\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-8\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/45?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/45?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eRequest.host\u003c/code\u003e and \u003ccode\u003eget_host\u003c/code\u003e return the empty string if the header is missing or has invalid characters. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3142\"\u003e#3142\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.7\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.7 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.7/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.7/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-7\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-7\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/44?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/44?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eparse_list_header\u003c/code\u003e preserves partially quoted items, discards empty items, and returns empty for unclosed quoted values. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3128\"\u003e#3128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eWWWAuthenticate.to_header\u003c/code\u003e does not produce a trailing space when there are no parameters. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3127\"\u003e#3127\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTransfer-Encoding\u003c/code\u003e is parsed as a set. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3134\"\u003e#3134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.host\u003c/code\u003e, \u003ccode\u003eget_host\u003c/code\u003e, and \u003ccode\u003ehost_is_trusted\u003c/code\u003e validate the characters of the value. An empty value is no longer allowed. A Unix socket server address is ignored. The \u003ccode\u003etrusted_list\u003c/code\u003e argument to \u003ccode\u003ehost_is_trusted\u003c/code\u003e is optional. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3113\"\u003e#3113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix multipart form parser handling of newline at boundary. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3088\"\u003e#3088\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.make_conditional\u003c/code\u003e sets the \u003ccode\u003eAccept-Ranges\u003c/code\u003e header even if it is not a satisfiable range request. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3108\"\u003e#3108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emerge_slashes\u003c/code\u003e merges any number of consecutive slashes. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3121\"\u003e#3121\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.6 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.6/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in multi-segment paths. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x\"\u003eGHSA-29vq-49wr-vm6x\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.5/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/43?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/43?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless of extension or surrounding spaces. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-87hc-h4r5-73f7\"\u003eGHSA-87hc-h4r5-73f7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary. This fixes the previous attempt, which caused incorrect content lengths. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3077\"\u003e#3077\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAttributeError\u003c/code\u003e when initializing \u003ccode\u003eDebuggedApplication\u003c/code\u003e with \u003ccode\u003epin_security=False\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3075\"\u003e#3075\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.4/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/42?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/42?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/blob/main/CHANGES.rst\"\u003ewerkzeug's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.8\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eRequest.host\u003c/code\u003e and \u003ccode\u003eget_host\u003c/code\u003e return the empty string if the header is\nmissing or has invalid characters. :issue:\u003ccode\u003e3142\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.7\u003c/h2\u003e\n\u003cp\u003eReleased 2026-03-23\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eparse_list_header\u003c/code\u003e preserves partially quoted items, discards empty\nitems, and returns empty for unclosed quoted values. :pr:\u003ccode\u003e3128\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eWWWAuthenticate.to_header\u003c/code\u003e does not produce a trailing space when there\nare no parameters. :issue:\u003ccode\u003e3127\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTransfer-Encoding\u003c/code\u003e is parsed as a set. :pr:\u003ccode\u003e3134\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.host\u003c/code\u003e, \u003ccode\u003eget_host\u003c/code\u003e, and \u003ccode\u003ehost_is_trusted\u003c/code\u003e validate the\ncharacters of the value. An empty value is no longer allowed. A Unix socket\nserver address is ignored. The \u003ccode\u003etrusted_list\u003c/code\u003e argument to\n\u003ccode\u003ehost_is_trusted\u003c/code\u003e is optional. :pr:\u003ccode\u003e3113\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix multipart form parser handling of newline at boundary. :issue:\u003ccode\u003e3088\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.make_conditional\u003c/code\u003e sets the \u003ccode\u003eAccept-Ranges\u003c/code\u003e header even if it\nis not a satisfiable range request. :issue:\u003ccode\u003e3108\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emerge_slashes\u003c/code\u003e merges any number of consecutive slashes. :issue:\u003ccode\u003e3121\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in\nmulti-segment paths. :ghsa:\u003ccode\u003e29vq-49wr-vm6x\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.make_conditional\u003c/code\u003e sets the \u003ccode\u003eAccept-Ranges\u003c/code\u003e header even if it\nis not a satisfiable range request. :issue:\u003ccode\u003e3108\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2026-01-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless\nof extension or surrounding spaces. :ghsa:\u003ccode\u003e87hc-h4r5-73f7\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary.\nThis fixes the previous attempt, which caused incorrect content lengths.\n:issue:\u003ccode\u003e3065\u003c/code\u003e :issue:\u003ccode\u003e3077\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/c1a26b45fb06d5e086b4d6be820c3302f588d815\"\u003e\u003ccode\u003ec1a26b4\u003c/code\u003e\u003c/a\u003e release version 3.1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/7926f0bc3a0da01827e59c81d6da55f8f75a2eed\"\u003e\u003ccode\u003e7926f0b\u003c/code\u003e\u003c/a\u003e relax get_host strictness (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3148\"\u003e#3148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/deab88f61fa57d37d19f83ea438d4bdebb5a743c\"\u003e\u003ccode\u003edeab88f\u003c/code\u003e\u003c/a\u003e relax get_host strictness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/65eb6398231fe94f32fbc765a74980ca61fe5d2b\"\u003e\u003ccode\u003e65eb639\u003c/code\u003e\u003c/a\u003e start version 3.1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/7720b76b37b17a33e5414bddb992c92ba854f0e3\"\u003e\u003ccode\u003e7720b76\u003c/code\u003e\u003c/a\u003e release version 3.1.7 (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3135\"\u003e#3135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/005d93bf3437226ab185d2edc6132918d3e45763\"\u003e\u003ccode\u003e005d93b\u003c/code\u003e\u003c/a\u003e release version 3.1.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/c328342ef9f7a6476b9e41565ad0a70ff10cfde6\"\u003e\u003ccode\u003ec328342\u003c/code\u003e\u003c/a\u003e merge any number of slashes (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/23142a3cb5d1b5ba8e9914980934477e0abdc30e\"\u003e\u003ccode\u003e23142a3\u003c/code\u003e\u003c/a\u003e merge any number of slashes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/b913d68db5898c8f3def3c09a653aaf95abe38e5\"\u003e\u003ccode\u003eb913d68\u003c/code\u003e\u003c/a\u003e always set accept-ranges header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/f282943ddc687e613b7ee79b4677e4961c32ae15\"\u003e\u003ccode\u003ef282943\u003c/code\u003e\u003c/a\u003e Correct 1049dd6b2a363e1ef302b4161c340fb8582f627a\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/werkzeug/compare/3.1.3...3.1.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-jwt-extended` from 4.7.1 to 4.7.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/releases\"\u003eflask-jwt-extended's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.7.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esetup.py: bump PyJWT floor to \u0026gt;=2.11.0 to match the actual runtime requirement by \u003ca href=\"https://github.com/potiuk\"\u003e\u003ccode\u003e@​potiuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/577\"\u003evimalloc/flask-jwt-extended#577\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/potiuk\"\u003e\u003ccode\u003e@​potiuk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/577\"\u003evimalloc/flask-jwt-extended#577\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.3...4.7.4\"\u003ehttps://github.com/vimalloc/flask-jwt-extended/compare/4.7.3...4.7.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.7.3\u003c/h2\u003e\n\u003cp\u003eI'm skipping 4.7.2 because I forgot to bump the python version in code. This is the same as 4.7.2, with things setup correctly.\u003c/p\u003e\n\u003cp\u003eOops\u003c/p\u003e\n\u003ch2\u003e4.7.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: a unexpected token by \u003ca href=\"https://github.com/Dog-Egg\"\u003e\u003ccode\u003e@​Dog-Egg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/567\"\u003evimalloc/flask-jwt-extended#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate active python versions by \u003ca href=\"https://github.com/vimalloc\"\u003e\u003ccode\u003e@​vimalloc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/575\"\u003evimalloc/flask-jwt-extended#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump PyJWT to 2.12.1 by \u003ca href=\"https://github.com/oomichi-melco\"\u003e\u003ccode\u003e@​oomichi-melco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/574\"\u003evimalloc/flask-jwt-extended#574\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/Dog-Egg\"\u003e\u003ccode\u003e@​Dog-Egg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/567\"\u003evimalloc/flask-jwt-extended#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oomichi-melco\"\u003e\u003ccode\u003e@​oomichi-melco\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/574\"\u003evimalloc/flask-jwt-extended#574\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.2\"\u003ehttps://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/fdad1cd380fa39c2bbe5b8fb2db69b05d123293f\"\u003e\u003ccode\u003efdad1cd\u003c/code\u003e\u003c/a\u003e Bump to 4.7.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/a049882b80b077ed2c751d3b2eb9b3f70d925c4d\"\u003e\u003ccode\u003ea049882\u003c/code\u003e\u003c/a\u003e setup.py: bump PyJWT floor to \u0026gt;=2.11.0 to match the actual runtime requiremen...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/03b64352620661ab464db95f76f6950ff7986ad1\"\u003e\u003ccode\u003e03b6435\u003c/code\u003e\u003c/a\u003e Bump to 4.7.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/9bf8d353a87a8ec7ac144d7090dd8f9a51bcedc6\"\u003e\u003ccode\u003e9bf8d35\u003c/code\u003e\u003c/a\u003e Bump PyJWT to 2.12.1 (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/574\"\u003e#574\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/78cf9447f614365d1d0aaa9334be97a1634cfaa9\"\u003e\u003ccode\u003e78cf944\u003c/code\u003e\u003c/a\u003e Update active python versions (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/575\"\u003e#575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/1910726f152016c3e48d61792983eebe11f54ac2\"\u003e\u003ccode\u003e1910726\u003c/code\u003e\u003c/a\u003e fix: a unexpected token (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.30.0 to 2.53.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.49.0.dev0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.48.0...v2.49.0-dev0\"\u003e2.49.0-dev0\u003c/a\u003e (2026-01-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove deprecated rsa dependency (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e98cf69284d3620619a70b54fb0b9533caf11878\"\u003ee98cf69284d3620619a70b54fb0b9533caf11878\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003egoogle-auth 2.48.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0\"\u003e2.48.0\u003c/a\u003e (2026-01-21)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ehonor \u003ccode\u003eNO_GCE_CHECK\u003c/code\u003e environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827\"\u003e383c9827\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b\"\u003e454b441b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2\"\u003e52558ae2\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport the mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1\"\u003e8dcf91a1\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eresolve circular imports (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1942\"\u003e#1942\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/25c1b064\"\u003e25c1b064\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003euser_verification=preferred\u003c/code\u003e for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a240\"\u003e3f88a240\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eremoves \u003ccode\u003econtent-header\u003c/code\u003e from AWS IMDS get request (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e\"\u003e97bfea9e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edetect correct auth when ADC env var is set but empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e10\"\u003ebfc07e10\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20c\"\u003ee431f20c\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.48.0rc0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0rc0\"\u003e2.48.0rc0\u003c/a\u003e (2026-01-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehonor NO_GCE_CHECK environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827536d9376e8248370ce4c2b83e468d027\"\u003e383c98\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\"\u003e454b44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1b05c85fbbd0bcee78d66e498099102ab\"\u003e8dcf91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2881b1e6555f6f5c0d76365c15807ead9\"\u003e52558a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse user_verification=preferred for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a24089c4ee6822d510de0db210b54260d873\"\u003e3f88a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20cf73ccac71926a23ec454468cea92e053\"\u003ee431f2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edetect correct auth when ADC env var is set by empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\"\u003ebfc07e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremoved content-header from AWS IMDS (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\"\u003e97bfea\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/googleapis/google-auth-library-python/blob/main/CHANGELOG.md\"\u003egoogle-auth's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://pypi.org/project/google-auth/#history\"\u003ePyPI History\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0\"\u003e2.48.0\u003c/a\u003e (2026-01-22)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2881b1e6555f6f5c0d76365c15807ead9\"\u003e52558ae2881b1e6555f6f5c0d76365c15807ead9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport the mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1b05c85fbbd0bcee78d66e498099102ab\"\u003e8dcf91a1b05c85fbbd0bcee78d66e498099102ab\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\"\u003e454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ehonor \u003ccode\u003eNO_GCE_CHECK\u003c/code\u003e environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827536d9376e8248370ce4c2b83e468d027\"\u003e383c9827536d9376e8248370ce4c2b83e468d027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eresolve circular imports (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1942\"\u003e#1942\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/25c1b064545702cbef087cfcd15fbbb6ef1af74f\"\u003e25c1b064545702cbef087cfcd15fbbb6ef1af74f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremoves \u003ccode\u003econtent-header\u003c/code\u003e from AWS IMDS get request (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\"\u003e97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edetect correct auth when ADC env var is set but empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\"\u003ebfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20cf73ccac71926a23ec454468cea92e053\"\u003ee431f20cf73ccac71926a23ec454468cea92e053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003euser_verification=preferred\u003c/code\u003e for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a24089c4ee6822d510de0db210b54260d873\"\u003e3f88a24089c4ee6822d510de0db210b54260d873\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.46.0...v2.47.0\"\u003e2.47.0\u003c/a\u003e (2026-01-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop \u003ccode\u003ecachetools\u003c/code\u003e dependency in favor of simple local implementation (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1590\"\u003e#1590\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/5c07e1c4f52bc77a1b16fa3b7b3c5269c242f6f4\"\u003e5c07e1c4f52bc77a1b16fa3b7b3c5269c242f6f4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 support (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1918\"\u003e#1918\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/60dc20014a35ec4ba71e8065b9a33ecbdbeca97a\"\u003e60dc20014a35ec4ba71e8065b9a33ecbdbeca97a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.45.0...v2.46.0\"\u003e2.46.0\u003c/a\u003e (2026-01-05)\u003c/h2\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate urllib3 docstrings for v2 compatibility (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1903\"\u003e#1903\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f1aeea2d1014ea1d244a4c3470e52d74d55404b\"\u003e3f1aeea2d1014ea1d244a4c3470e52d74d55404b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRecognize workload certificate config in has_default_client_cert_source for mTLS for Agentic Identities (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1907\"\u003e#1907\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/0b9107d573123e358c347ffa067637f992af61b4\"\u003e0b9107d573123e358c347ffa067637f992af61b4\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\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/google-auth-library-python/commits\"\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.3 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.3...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bleach` from 6.1.0 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mozilla/bleach/blob/main/CHANGES\"\u003ebleach's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.3.0 (October 27th, 2025)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wbr handling. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.2.0 (October 29th, 2024)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/737\"\u003e#737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove six depdenncy. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/618\"\u003e#618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known-good versions for tinycss2. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/732\"\u003e#732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix additional \u0026lt; followed by characters and EOF issues. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/5546d5dbce60d08ccb99d981778d74044d646d4e\"\u003e\u003ccode\u003e5546d5d\u003c/code\u003e\u003c/a\u003e chore: prep for 6.3.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/88df3ff23fb2a43e174b3fdfe9191ef516de868a\"\u003e\u003ccode\u003e88df3ff\u003c/code\u003e\u003c/a\u003e chore: fix readthedocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d8b2fb45b2606515c58787c223d6605c6c70868f\"\u003e\u003ccode\u003ed8b2fb4\u003c/code\u003e\u003c/a\u003e fix: fix wbr handling (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/55e48cedb20bda23940ab34753a1fb378d5d30b9\"\u003e\u003ccode\u003e55e48ce\u003c/code\u003e\u003c/a\u003e chore: add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/a4d6cddac6e338c3d6f84c755a5fcb32e9e18fba\"\u003e\u003ccode\u003ea4d6cdd\u003c/code\u003e\u003c/a\u003e chore: drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/172d92faef543a83c6760c63c32749586cdd564b\"\u003e\u003ccode\u003e172d92f\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/df88612f2e9daf8f4ee23cf0e29b712d9d9147b6\"\u003e\u003ccode\u003edf88612\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/cbcf6b18d19aeb7777699f9385013d0a04052b68\"\u003e\u003ccode\u003ecbcf6b1\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.3 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d9aa7ef592d57dda56e26ba31d06e1b279c58eca\"\u003e\u003ccode\u003ed9aa7ef\u003c/code\u003e\u003c/a\u003e Switch from dependabot reviewers to CODEOWNERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/06f0f76cc68112bda3fa101d1730d5ba914d54a1\"\u003e\u003ccode\u003e06f0f76\u003c/code\u003e\u003c/a\u003e Update setuptools, wheel, and twine for devs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mozilla/bleach/compare/v6.1.0...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.8.2 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.8.2...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.3.4 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/de...\n\n_Description has been truncated_","html_url":"https://github.com/TanPrishDynamics/partosathi/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanPrishDynamics%2Fpartosathi/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"},{"uuid":"4506765164","node_id":"PR_kwDOQvx9V87ejS7x","number":21,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-23T04:03:50.000Z","updated_at":"2026-05-23T04:03:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/mour250027044/efficientnet-yolov9-object-dectetion-tool/pull/21","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mour250027044%2Fefficientnet-yolov9-object-dectetion-tool/issues/21","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21/packages"},{"uuid":"4506021598","node_id":"PR_kwDOSfTkDM7ehA0f","number":7,"state":"open","title":"chore(deps): bump the pip group across 1 directory with 2 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-22T23:03:22.000Z","updated_at":"2026-05-22T23:03:25.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip","update_count":2,"packages":[{"name":"flask","old_version":"3.0.3","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"werkzeug","old_version":"3.0.3","new_version":"3.1.6","repository_url":"https://github.com/pallets/werkzeug"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 2 updates in the / directory: [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\n\nUpdates `flask` from 3.0.3 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.3...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `werkzeug` from 3.0.3 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/releases\"\u003ewerkzeug's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.6 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.6/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in multi-segment paths. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x\"\u003eGHSA-29vq-49wr-vm6x\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.5/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/43?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/43?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless of extension or surrounding spaces. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-87hc-h4r5-73f7\"\u003eGHSA-87hc-h4r5-73f7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary. This fixes the previous attempt, which caused incorrect content lengths. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3077\"\u003e#3077\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAttributeError\u003c/code\u003e when initializing \u003ccode\u003eDebuggedApplication\u003c/code\u003e with \u003ccode\u003epin_security=False\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3075\"\u003e#3075\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.4/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/42?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/42?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special device names. This prevents reading from these when using \u003ccode\u003esend_from_directory\u003c/code\u003e. \u003ccode\u003esecure_filename\u003c/code\u003e already prevented writing to these. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-hgf8-39gv-g3f2\"\u003eghsa-hgf8-39gv-g3f2\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe debugger pin fails after 10 attempts instead of 11. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3020\"\u003e#3020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3065\"\u003e#3065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CPU usage during Watchdog reloader. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3054\"\u003e#3054\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.json\u003c/code\u003e annotation is more accurate. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3067\"\u003e#3067\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTraceback rendering handles when the line number is beyond the available source lines. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3044\"\u003e#3044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eHTTPException.get_response\u003c/code\u003e annotation and doc better conveys the distinction between WSGI and sans-IO responses. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3056\"\u003e#3056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.3/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3\"\u003ehttps://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/41?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/41?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInitial data passed to \u003ccode\u003eMultiDict\u003c/code\u003e and similar interfaces only accepts \u003ccode\u003elist\u003c/code\u003e, \u003ccode\u003etuple\u003c/code\u003e, or \u003ccode\u003eset\u003c/code\u003e when passing multiple values. It had been changed to accept any \u003ccode\u003eCollection\u003c/code\u003e, but this matched types that should be treated as single values, such as \u003ccode\u003ebytes\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/2994\"\u003e#2994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen the \u003ccode\u003eHost\u003c/code\u003e header is not set and \u003ccode\u003eRequest.host\u003c/code\u003e falls back to the WSGI \u003ccode\u003eSERVER_NAME\u003c/code\u003e value, if that value is an IPv6 address it is wrapped in \u003ccode\u003e[]\u003c/code\u003e to match the \u003ccode\u003eHost\u003c/code\u003e header. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/2993\"\u003e#2993\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.2/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2\"\u003ehttps://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/blob/main/CHANGES.rst\"\u003ewerkzeug's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in\nmulti-segment paths. :ghsa:\u003ccode\u003e29vq-49wr-vm6x\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.make_conditional\u003c/code\u003e sets the \u003ccode\u003eAccept-Ranges\u003c/code\u003e header even if it\nis not a satisfiable range request. :issue:\u003ccode\u003e3108\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2026-01-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless\nof extension or surrounding spaces. :ghsa:\u003ccode\u003e87hc-h4r5-73f7\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary.\nThis fixes the previous attempt, which caused incorrect content lengths.\n:issue:\u003ccode\u003e3065\u003c/code\u003e :issue:\u003ccode\u003e3077\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAttributeError\u003c/code\u003e when initializing \u003ccode\u003eDebuggedApplication\u003c/code\u003e with\n\u003ccode\u003epin_security=False\u003c/code\u003e. :issue:\u003ccode\u003e3075\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.4\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-28\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special device names. This prevents\nreading from these when using \u003ccode\u003esend_from_directory\u003c/code\u003e. \u003ccode\u003esecure_filename\u003c/code\u003e\nalready prevented writing to these. :ghsa:\u003ccode\u003ehgf8-39gv-g3f2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe debugger pin fails after 10 attempts instead of 11. :pr:\u003ccode\u003e3020\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary.\n:issue:\u003ccode\u003e3065\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove CPU usage during Watchdog reloader. :issue:\u003ccode\u003e3054\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.json\u003c/code\u003e annotation is more accurate. :issue:\u003ccode\u003e3067\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTraceback rendering handles when the line number is beyond the available\nsource lines. :issue:\u003ccode\u003e3044\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eHTTPException.get_response\u003c/code\u003e annotation and doc better conveys the\ndistinction between WSGI and sans-IO responses. :issue:\u003ccode\u003e3056\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInitial data passed to \u003ccode\u003eMultiDict\u003c/code\u003e and similar interfaces only accepts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/04da1b5221b7a7b57e82246e4b5741d37a6b2e56\"\u003e\u003ccode\u003e04da1b5\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/f407712fdc60a09c2b3f4fe7db557703e5d9338d\"\u003e\u003ccode\u003ef407712\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/f54fe98026253e70fbbcd35a6b52fb67cfff1c03\"\u003e\u003ccode\u003ef54fe98\u003c/code\u003e\u003c/a\u003e safe_join prevents Windows special device names in multi-segment paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/d005985ef69ffe3275eda8fb6fb25e074dbe871b\"\u003e\u003ccode\u003ed005985\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/8565c2cbd6681ae8463e77d4fc0795324a7fdae7\"\u003e\u003ccode\u003e8565c2c\u003c/code\u003e\u003c/a\u003e document rule priority (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/3febc7e90072bffe04c27e6b7478dfc4f88930df\"\u003e\u003ccode\u003e3febc7e\u003c/code\u003e\u003c/a\u003e document rule priority\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/2525b827646c10ab7adb334664e6a4af1b769181\"\u003e\u003ccode\u003e2525b82\u003c/code\u003e\u003c/a\u003e remove state machine docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/4abfbd553cdeb6d4e6fa693340d52b13c884079f\"\u003e\u003ccode\u003e4abfbd5\u003c/code\u003e\u003c/a\u003e rewrite build docstring (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3097\"\u003e#3097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/161c18b2a8800ae6ef377fb3cbdb933a878fea67\"\u003e\u003ccode\u003e161c18b\u003c/code\u003e\u003c/a\u003e rewrite build docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/86e11c29e44726dae524cd9db11549b3b1ad681d\"\u003e\u003ccode\u003e86e11c2\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/werkzeug/compare/3.0.3...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/robertpelloni/planet_fitness_stepmaniax_agent/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/robertpelloni/planet_fitness_stepmaniax_agent/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertpelloni%2Fplanet_fitness_stepmaniax_agent/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"},{"uuid":"4503602899","node_id":"PR_kwDOQGVLVM7eZMqK","number":279,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-02T20:35:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-22T15:00:48.000Z","updated_at":"2026-06-02T20:35:24.000Z","time_to_close":970474,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":18,"packages":[{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.80.0"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-provider-flagd","old_version":"0.2.3","new_version":"0.4.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-distro","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"openfeature-provider-ofrep","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-api","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-sdk","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 18 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 13 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 8 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.80.0\n\nUpdates `openfeature-hooks-opentelemetry` from 0.2.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-hooks-opentelemetry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003e0.3.1\u003c/a\u003e (2026-02-17)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e2a2127d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2025-12-16)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emigrate to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/293\"\u003e#293\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/9590554be4c8a7f77b0c0f20d6b48076c9870f52\"\u003e9590554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a2ec682a709a4721f8362cfa6a9e6037937761ee\"\u003ea2ec682\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/open-feature/python-sdk-contrib/commit/83926dea688eac265405b79c2ec00c9d08c8862e\"\u003e\u003ccode\u003e83926de\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-hooks-opentelemetry 0.3.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e\u003ccode\u003e2a2127d\u003c/code\u003e\u003c/a\u003e fix: Align TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c08b414007f6ce10dcb83249142f054b6d6043d6\"\u003e\u003ccode\u003ec08b414\u003c/code\u003e\u003c/a\u003e chore: align unleash pyproject.toml to others (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/8239b836a25663e0030b3891d0140cb365798a37\"\u003e\u003ccode\u003e8239b83\u003c/code\u003e\u003c/a\u003e feat(provider): add \u003ccode\u003eaws-ssm\u003c/code\u003e provider (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e\u003ccode\u003e61add22\u003c/code\u003e\u003c/a\u003e fix: replace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a835c77f10c82af2157ea15be0ffae7bad79b8ce\"\u003e\u003ccode\u003ea835c77\u003c/code\u003e\u003c/a\u003e chore: relax \u003ccode\u003etypes-requests\u003c/code\u003e and update \u003ccode\u003egrpcio\u003c/code\u003e version constraints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a345ef9f1ea3333e49a173553a9098f5db6746a7\"\u003e\u003ccode\u003ea345ef9\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.2.7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b9c164a2342d101e23e062a81558f02fe0a38c0b\"\u003e\u003ccode\u003eb9c164a\u003c/code\u003e\u003c/a\u003e fix(security): update dependency protobuf to v6.33.5 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2feabd5d70bef2de6661fadf3d74238991a27466\"\u003e\u003ccode\u003e2feabd5\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-unleash 0.1.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/dcb8fadfbc0263e68c381681b5b92cb5fea2dc0d\"\u003e\u003ccode\u003edcb8fad\u003c/code\u003e\u003c/a\u003e chore: add component owners\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-flagd` from 0.2.3 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-flagd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.4.0...openfeature-provider-flagd/v0.4.1\"\u003e0.4.1\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003evarious custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003ec119a77\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eflagd:\u003c/strong\u003e extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e1995534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.3.0...openfeature-provider-flagd/v0.4.0\"\u003e0.4.0\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/83c3e48595c0f44b4a3259719a5d85fde987f492\"\u003e83c3e48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintroduce list for fatal status codes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/362\"\u003e#362\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/96a88ada622fb7941a1d4d58205ff3342180fa9a\"\u003e96a88ad\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.7...openfeature-provider-flagd/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.2.7\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/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/564eb68aa513e6d8b5fb06aa5f632f427b11abe5\"\u003e\u003ccode\u003e564eb68\u003c/code\u003e\u003c/a\u003e fix(security): update dependency pytest to v9.0.3 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.3...openfeature-provider-flagd/v0.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-distro` from 0.58b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-distro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\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\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-exporter-otlp-proto-grpc` from 1.37.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.37.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/docs/changelog.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e7.2.2 — 2026-01-28\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [Linux]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003epidfd_open()\u003c/code\u003e +\n\u003ccode\u003epoll()\u003c/code\u003e (no busy loop). Requires Linux \u0026gt;= 5.3 and Python \u0026gt;= 3.9.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [macOS], [BSD]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003ekqueue()\u003c/code\u003e (no\nbusy loop).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2701\u003c/code\u003e, [macOS]: fix compilation error on macOS \u0026lt; 10.7. (patch by\n:user:\u003ccode\u003eSergey Fedorov \u0026lt;barracuda156\u0026gt;\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2707\u003c/code\u003e, [macOS]: fix potential memory leaks in error paths of\n:meth:\u003ccode\u003eProcess.memory_full_info\u003c/code\u003e and :meth:\u003ccode\u003eProcess.threads\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2708\u003c/code\u003e, [macOS]: :meth:\u003ccode\u003eProcess.cmdline\u003c/code\u003e and :meth:\u003ccode\u003eProcess.environ\u003c/code\u003e may\nfail with \u003ccode\u003eOSError: [Errno 0] Undefined error\u003c/code\u003e (from\n\u003ccode\u003esysctl(KERN_PROCARGS2)\u003c/code\u003e). They now raise :exc:\u003ccode\u003eAccessDenied\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.1 — 2025-12-29\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2699\u003c/code\u003e, [FreeBSD], [NetBSD]: :func:\u003ccode\u003eheap_info\u003c/code\u003e does not detect small\nallocations (\u0026lt;= 1K). In order to fix that, we now flush internal jemalloc\ncache before fetching the metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.0 — 2025-12-23\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e1275\u003c/code\u003e: new :func:\u003ccode\u003eheap_info\u003c/code\u003e and :func:\u003ccode\u003eheap_trim\u003c/code\u003e functions, providing\ndirect access to the platform's native C :term:\u003ccode\u003eheap\u003c/code\u003e allocator (glibc,\nmimalloc, libmalloc). Useful to create tools to detect memory leaks.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2403\u003c/code\u003e, [Linux]: publish wheels for Linux musl.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2680\u003c/code\u003e: unit tests are no longer installed / part of the distribution.\nThey now live under \u003ccode\u003etests/\u003c/code\u003e instead of \u003ccode\u003epsutil/tests\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2684\u003c/code\u003e, [FreeBSD], [critical]: compilation fails on FreeBSD 14 due to\nmissing include.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2691\u003c/code\u003e, [Windows]: fix memory leak in :func:\u003ccode\u003enet_if_stats\u003c/code\u003e due to missing\n\u003ccode\u003ePy_CLEAR\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eCompatibility notes\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9eea97dd6f1d16ea33f5144c8925f1ce7a0688e1\"\u003e\u003ccode\u003e9eea97d\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/938ac647418f09e4e610b2c755741316713c5592\"\u003e\u003ccode\u003e938ac64\u003c/code\u003e\u003c/a\u003e Rm sphinxcontrib.googleanalytics; override layout.html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9dcbb7e60e650f0ab0cb52154b0a12c70f6a1e4c\"\u003e\u003ccode\u003e9dcbb7e\u003c/code\u003e\u003c/a\u003e Add sphinxcontrib-googleanalytics to requirements.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/76eaf9ae0f2868569c14b46f4165310885a40a15\"\u003e\u003ccode\u003e76eaf9a\u003c/code\u003e\u003c/a\u003e Try to add google analytics to doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/de1cafa56f54e97ca557993155e76dd98877e136\"\u003e\u003ccode\u003ede1cafa\u003c/code\u003e\u003c/a\u003e Update doc mentioning Process.wait() internal details\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/bb30943b0336a16f28437ec549c15a8ad2830cca\"\u003e\u003ccode\u003ebb30943\u003c/code\u003e\u003c/a\u003e Refact can_use_pidfd_open() and can_use_kqueue()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/a571717d6520d436273c8cb34ca871db4bfa508a\"\u003e\u003ccode\u003ea571717\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2708\"\u003e#2708\u003c/a\u003e, macos / cmdline / environ; raise AD instead of OSError(0) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8b98c3effc20dcc4ed08c8f3d33e11ec0f5445b1\"\u003e\u003ccode\u003e8b98c3e\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/700b7e6a4171ae7c775679217205f1d97568ae00\"\u003e\u003ccode\u003e700b7e6\u003c/code\u003e\u003c/a\u003e [macOS] fix potential leaks in error paths (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/7cc7923a1479fb1d32bb25d3e78b465e2695fbf7\"\u003e\u003ccode\u003e7cc7923\u003c/code\u003e\u003c/a\u003e Windows / cmdline(): be more defensive in free()ing in case of error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/v7.0.0...v7.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 4.0.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/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\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/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.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 `flask` from 3.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.2...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-ofrep` from 0.2.0 to 0.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-ofrep's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-ofrep: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eofrep:\u003c/strong\u003e handle 401, 403, 404 and 5xx errors explicitly and add tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/346\"\u003e#346\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/7e18bc120ee1a310c28c96aac5b608941889d756\"\u003e7e18bc1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\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/open-feature/python-sdk-contrib/commit/4ef10198f1dad5887056f453340f6fb3c9dabc83\"\u003e\u003ccode\u003e4ef1019\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-ofrep 0.3.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-api` from 1.37.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.37.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-jinja2` from 0.58b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-jinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\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\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-requests` from 0.58b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-requests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/...\n\n_Description has been truncated_","html_url":"https://github.com/BramVerkuijlen/Minimal-OTel-Demo/pull/279","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/BramVerkuijlen%2FMinimal-OTel-Demo/issues/279","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/279/packages"},{"uuid":"4500961536","node_id":"PR_kwDOQIiWRs7eQkAC","number":267,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-02T00:37:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-22T07:59:43.000Z","updated_at":"2026-06-02T00:37:46.000Z","time_to_close":923881,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":18,"packages":[{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.80.0"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-provider-flagd","old_version":"0.2.3","new_version":"0.4.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-distro","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"openfeature-provider-ofrep","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-api","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-sdk","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 18 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 13 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 8 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.80.0\n\nUpdates `openfeature-hooks-opentelemetry` from 0.2.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-hooks-opentelemetry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003e0.3.1\u003c/a\u003e (2026-02-17)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e2a2127d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2025-12-16)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emigrate to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/293\"\u003e#293\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/9590554be4c8a7f77b0c0f20d6b48076c9870f52\"\u003e9590554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a2ec682a709a4721f8362cfa6a9e6037937761ee\"\u003ea2ec682\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/open-feature/python-sdk-contrib/commit/83926dea688eac265405b79c2ec00c9d08c8862e\"\u003e\u003ccode\u003e83926de\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-hooks-opentelemetry 0.3.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e\u003ccode\u003e2a2127d\u003c/code\u003e\u003c/a\u003e fix: Align TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c08b414007f6ce10dcb83249142f054b6d6043d6\"\u003e\u003ccode\u003ec08b414\u003c/code\u003e\u003c/a\u003e chore: align unleash pyproject.toml to others (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/8239b836a25663e0030b3891d0140cb365798a37\"\u003e\u003ccode\u003e8239b83\u003c/code\u003e\u003c/a\u003e feat(provider): add \u003ccode\u003eaws-ssm\u003c/code\u003e provider (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e\u003ccode\u003e61add22\u003c/code\u003e\u003c/a\u003e fix: replace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a835c77f10c82af2157ea15be0ffae7bad79b8ce\"\u003e\u003ccode\u003ea835c77\u003c/code\u003e\u003c/a\u003e chore: relax \u003ccode\u003etypes-requests\u003c/code\u003e and update \u003ccode\u003egrpcio\u003c/code\u003e version constraints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a345ef9f1ea3333e49a173553a9098f5db6746a7\"\u003e\u003ccode\u003ea345ef9\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.2.7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b9c164a2342d101e23e062a81558f02fe0a38c0b\"\u003e\u003ccode\u003eb9c164a\u003c/code\u003e\u003c/a\u003e fix(security): update dependency protobuf to v6.33.5 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2feabd5d70bef2de6661fadf3d74238991a27466\"\u003e\u003ccode\u003e2feabd5\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-unleash 0.1.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/dcb8fadfbc0263e68c381681b5b92cb5fea2dc0d\"\u003e\u003ccode\u003edcb8fad\u003c/code\u003e\u003c/a\u003e chore: add component owners\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-flagd` from 0.2.3 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-flagd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.4.0...openfeature-provider-flagd/v0.4.1\"\u003e0.4.1\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003evarious custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003ec119a77\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eflagd:\u003c/strong\u003e extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e1995534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.3.0...openfeature-provider-flagd/v0.4.0\"\u003e0.4.0\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/83c3e48595c0f44b4a3259719a5d85fde987f492\"\u003e83c3e48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintroduce list for fatal status codes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/362\"\u003e#362\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/96a88ada622fb7941a1d4d58205ff3342180fa9a\"\u003e96a88ad\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.7...openfeature-provider-flagd/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.2.7\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/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/564eb68aa513e6d8b5fb06aa5f632f427b11abe5\"\u003e\u003ccode\u003e564eb68\u003c/code\u003e\u003c/a\u003e fix(security): update dependency pytest to v9.0.3 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.3...openfeature-provider-flagd/v0.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-distro` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-distro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\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\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-exporter-otlp-proto-grpc` from 1.38.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.38.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/docs/changelog.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e7.2.2 — 2026-01-28\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [Linux]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003epidfd_open()\u003c/code\u003e +\n\u003ccode\u003epoll()\u003c/code\u003e (no busy loop). Requires Linux \u0026gt;= 5.3 and Python \u0026gt;= 3.9.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [macOS], [BSD]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003ekqueue()\u003c/code\u003e (no\nbusy loop).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2701\u003c/code\u003e, [macOS]: fix compilation error on macOS \u0026lt; 10.7. (patch by\n:user:\u003ccode\u003eSergey Fedorov \u0026lt;barracuda156\u0026gt;\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2707\u003c/code\u003e, [macOS]: fix potential memory leaks in error paths of\n:meth:\u003ccode\u003eProcess.memory_full_info\u003c/code\u003e and :meth:\u003ccode\u003eProcess.threads\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2708\u003c/code\u003e, [macOS]: :meth:\u003ccode\u003eProcess.cmdline\u003c/code\u003e and :meth:\u003ccode\u003eProcess.environ\u003c/code\u003e may\nfail with \u003ccode\u003eOSError: [Errno 0] Undefined error\u003c/code\u003e (from\n\u003ccode\u003esysctl(KERN_PROCARGS2)\u003c/code\u003e). They now raise :exc:\u003ccode\u003eAccessDenied\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.1 — 2025-12-29\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2699\u003c/code\u003e, [FreeBSD], [NetBSD]: :func:\u003ccode\u003eheap_info\u003c/code\u003e does not detect small\nallocations (\u0026lt;= 1K). In order to fix that, we now flush internal jemalloc\ncache before fetching the metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.0 — 2025-12-23\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e1275\u003c/code\u003e: new :func:\u003ccode\u003eheap_info\u003c/code\u003e and :func:\u003ccode\u003eheap_trim\u003c/code\u003e functions, providing\ndirect access to the platform's native C :term:\u003ccode\u003eheap\u003c/code\u003e allocator (glibc,\nmimalloc, libmalloc). Useful to create tools to detect memory leaks.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2403\u003c/code\u003e, [Linux]: publish wheels for Linux musl.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2680\u003c/code\u003e: unit tests are no longer installed / part of the distribution.\nThey now live under \u003ccode\u003etests/\u003c/code\u003e instead of \u003ccode\u003epsutil/tests\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2684\u003c/code\u003e, [FreeBSD], [critical]: compilation fails on FreeBSD 14 due to\nmissing include.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2691\u003c/code\u003e, [Windows]: fix memory leak in :func:\u003ccode\u003enet_if_stats\u003c/code\u003e due to missing\n\u003ccode\u003ePy_CLEAR\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eCompatibility notes\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9eea97dd6f1d16ea33f5144c8925f1ce7a0688e1\"\u003e\u003ccode\u003e9eea97d\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/938ac647418f09e4e610b2c755741316713c5592\"\u003e\u003ccode\u003e938ac64\u003c/code\u003e\u003c/a\u003e Rm sphinxcontrib.googleanalytics; override layout.html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9dcbb7e60e650f0ab0cb52154b0a12c70f6a1e4c\"\u003e\u003ccode\u003e9dcbb7e\u003c/code\u003e\u003c/a\u003e Add sphinxcontrib-googleanalytics to requirements.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/76eaf9ae0f2868569c14b46f4165310885a40a15\"\u003e\u003ccode\u003e76eaf9a\u003c/code\u003e\u003c/a\u003e Try to add google analytics to doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/de1cafa56f54e97ca557993155e76dd98877e136\"\u003e\u003ccode\u003ede1cafa\u003c/code\u003e\u003c/a\u003e Update doc mentioning Process.wait() internal details\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/bb30943b0336a16f28437ec549c15a8ad2830cca\"\u003e\u003ccode\u003ebb30943\u003c/code\u003e\u003c/a\u003e Refact can_use_pidfd_open() and can_use_kqueue()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/a571717d6520d436273c8cb34ca871db4bfa508a\"\u003e\u003ccode\u003ea571717\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2708\"\u003e#2708\u003c/a\u003e, macos / cmdline / environ; raise AD instead of OSError(0) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8b98c3effc20dcc4ed08c8f3d33e11ec0f5445b1\"\u003e\u003ccode\u003e8b98c3e\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/700b7e6a4171ae7c775679217205f1d97568ae00\"\u003e\u003ccode\u003e700b7e6\u003c/code\u003e\u003c/a\u003e [macOS] fix potential leaks in error paths (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/7cc7923a1479fb1d32bb25d3e78b465e2695fbf7\"\u003e\u003ccode\u003e7cc7923\u003c/code\u003e\u003c/a\u003e Windows / cmdline(): be more defensive in free()ing in case of error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/v7.0.0...v7.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 4.0.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/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\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/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.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 `flask` from 3.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.2...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-ofrep` from 0.2.0 to 0.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-ofrep's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-ofrep: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eofrep:\u003c/strong\u003e handle 401, 403, 404 and 5xx errors explicitly and add tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/346\"\u003e#346\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/7e18bc120ee1a310c28c96aac5b608941889d756\"\u003e7e18bc1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\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/open-feature/python-sdk-contrib/commit/4ef10198f1dad5887056f453340f6fb3c9dabc83\"\u003e\u003ccode\u003e4ef1019\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-ofrep 0.3.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-api` from 1.38.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.38.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-jinja2` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-jinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\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\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-requests` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-requests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/...\n\n_Description has been truncated_","html_url":"https://github.com/monoscope-tech/oteldemo/pull/267","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/monoscope-tech%2Foteldemo/issues/267","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/267/packages"},{"uuid":"4499667855","node_id":"PR_kwDOPzk3Ms7eMbhe","number":286,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 19 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-01T06:50:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-22T03:48:44.000Z","updated_at":"2026-06-01T06:50:58.000Z","time_to_close":874932,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":19,"packages":[{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.80.0"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-provider-flagd","old_version":"0.2.3","new_version":"0.4.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-distro","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"locust-plugins","old_version":"4.7.0","new_version":"5.0.0","repository_url":"https://github.com/SvenskaSpel/locust-plugins"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-api","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-sdk","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 19 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [locust-plugins](https://github.com/SvenskaSpel/locust-plugins) | `4.7.0` | `5.0.0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 14 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [locust-plugins](https://github.com/SvenskaSpel/locust-plugins) | `4.7.0` | `5.0.0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 8 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.1.0` |\n\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.80.0\n\nUpdates `openfeature-hooks-opentelemetry` from 0.2.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-hooks-opentelemetry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003e0.3.1\u003c/a\u003e (2026-02-17)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e2a2127d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2025-12-16)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emigrate to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/293\"\u003e#293\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/9590554be4c8a7f77b0c0f20d6b48076c9870f52\"\u003e9590554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a2ec682a709a4721f8362cfa6a9e6037937761ee\"\u003ea2ec682\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/open-feature/python-sdk-contrib/commit/83926dea688eac265405b79c2ec00c9d08c8862e\"\u003e\u003ccode\u003e83926de\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-hooks-opentelemetry 0.3.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e\u003ccode\u003e2a2127d\u003c/code\u003e\u003c/a\u003e fix: Align TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c08b414007f6ce10dcb83249142f054b6d6043d6\"\u003e\u003ccode\u003ec08b414\u003c/code\u003e\u003c/a\u003e chore: align unleash pyproject.toml to others (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/8239b836a25663e0030b3891d0140cb365798a37\"\u003e\u003ccode\u003e8239b83\u003c/code\u003e\u003c/a\u003e feat(provider): add \u003ccode\u003eaws-ssm\u003c/code\u003e provider (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e\u003ccode\u003e61add22\u003c/code\u003e\u003c/a\u003e fix: replace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a835c77f10c82af2157ea15be0ffae7bad79b8ce\"\u003e\u003ccode\u003ea835c77\u003c/code\u003e\u003c/a\u003e chore: relax \u003ccode\u003etypes-requests\u003c/code\u003e and update \u003ccode\u003egrpcio\u003c/code\u003e version constraints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a345ef9f1ea3333e49a173553a9098f5db6746a7\"\u003e\u003ccode\u003ea345ef9\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.2.7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b9c164a2342d101e23e062a81558f02fe0a38c0b\"\u003e\u003ccode\u003eb9c164a\u003c/code\u003e\u003c/a\u003e fix(security): update dependency protobuf to v6.33.5 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2feabd5d70bef2de6661fadf3d74238991a27466\"\u003e\u003ccode\u003e2feabd5\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-unleash 0.1.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/dcb8fadfbc0263e68c381681b5b92cb5fea2dc0d\"\u003e\u003ccode\u003edcb8fad\u003c/code\u003e\u003c/a\u003e chore: add component owners\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-flagd` from 0.2.3 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-flagd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.4.0...openfeature-provider-flagd/v0.4.1\"\u003e0.4.1\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003evarious custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003ec119a77\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eflagd:\u003c/strong\u003e extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e1995534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.3.0...openfeature-provider-flagd/v0.4.0\"\u003e0.4.0\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/83c3e48595c0f44b4a3259719a5d85fde987f492\"\u003e83c3e48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintroduce list for fatal status codes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/362\"\u003e#362\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/96a88ada622fb7941a1d4d58205ff3342180fa9a\"\u003e96a88ad\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.7...openfeature-provider-flagd/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.2.7\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/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/564eb68aa513e6d8b5fb06aa5f632f427b11abe5\"\u003e\u003ccode\u003e564eb68\u003c/code\u003e\u003c/a\u003e fix(security): update dependency pytest to v9.0.3 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.3...openfeature-provider-flagd/v0.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-distro` from 0.58b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-distro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\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\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-exporter-otlp-proto-grpc` from 1.37.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.37.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/docs/changelog.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e7.2.2 — 2026-01-28\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [Linux]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003epidfd_open()\u003c/code\u003e +\n\u003ccode\u003epoll()\u003c/code\u003e (no busy loop). Requires Linux \u0026gt;= 5.3 and Python \u0026gt;= 3.9.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [macOS], [BSD]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003ekqueue()\u003c/code\u003e (no\nbusy loop).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2701\u003c/code\u003e, [macOS]: fix compilation error on macOS \u0026lt; 10.7. (patch by\n:user:\u003ccode\u003eSergey Fedorov \u0026lt;barracuda156\u0026gt;\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2707\u003c/code\u003e, [macOS]: fix potential memory leaks in error paths of\n:meth:\u003ccode\u003eProcess.memory_full_info\u003c/code\u003e and :meth:\u003ccode\u003eProcess.threads\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2708\u003c/code\u003e, [macOS]: :meth:\u003ccode\u003eProcess.cmdline\u003c/code\u003e and :meth:\u003ccode\u003eProcess.environ\u003c/code\u003e may\nfail with \u003ccode\u003eOSError: [Errno 0] Undefined error\u003c/code\u003e (from\n\u003ccode\u003esysctl(KERN_PROCARGS2)\u003c/code\u003e). They now raise :exc:\u003ccode\u003eAccessDenied\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.1 — 2025-12-29\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2699\u003c/code\u003e, [FreeBSD], [NetBSD]: :func:\u003ccode\u003eheap_info\u003c/code\u003e does not detect small\nallocations (\u0026lt;= 1K). In order to fix that, we now flush internal jemalloc\ncache before fetching the metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.0 — 2025-12-23\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e1275\u003c/code\u003e: new :func:\u003ccode\u003eheap_info\u003c/code\u003e and :func:\u003ccode\u003eheap_trim\u003c/code\u003e functions, providing\ndirect access to the platform's native C :term:\u003ccode\u003eheap\u003c/code\u003e allocator (glibc,\nmimalloc, libmalloc). Useful to create tools to detect memory leaks.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2403\u003c/code\u003e, [Linux]: publish wheels for Linux musl.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2680\u003c/code\u003e: unit tests are no longer installed / part of the distribution.\nThey now live under \u003ccode\u003etests/\u003c/code\u003e instead of \u003ccode\u003epsutil/tests\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2684\u003c/code\u003e, [FreeBSD], [critical]: compilation fails on FreeBSD 14 due to\nmissing include.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2691\u003c/code\u003e, [Windows]: fix memory leak in :func:\u003ccode\u003enet_if_stats\u003c/code\u003e due to missing\n\u003ccode\u003ePy_CLEAR\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eCompatibility notes\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9eea97dd6f1d16ea33f5144c8925f1ce7a0688e1\"\u003e\u003ccode\u003e9eea97d\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/938ac647418f09e4e610b2c755741316713c5592\"\u003e\u003ccode\u003e938ac64\u003c/code\u003e\u003c/a\u003e Rm sphinxcontrib.googleanalytics; override layout.html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9dcbb7e60e650f0ab0cb52154b0a12c70f6a1e4c\"\u003e\u003ccode\u003e9dcbb7e\u003c/code\u003e\u003c/a\u003e Add sphinxcontrib-googleanalytics to requirements.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/76eaf9ae0f2868569c14b46f4165310885a40a15\"\u003e\u003ccode\u003e76eaf9a\u003c/code\u003e\u003c/a\u003e Try to add google analytics to doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/de1cafa56f54e97ca557993155e76dd98877e136\"\u003e\u003ccode\u003ede1cafa\u003c/code\u003e\u003c/a\u003e Update doc mentioning Process.wait() internal details\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/bb30943b0336a16f28437ec549c15a8ad2830cca\"\u003e\u003ccode\u003ebb30943\u003c/code\u003e\u003c/a\u003e Refact can_use_pidfd_open() and can_use_kqueue()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/a571717d6520d436273c8cb34ca871db4bfa508a\"\u003e\u003ccode\u003ea571717\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2708\"\u003e#2708\u003c/a\u003e, macos / cmdline / environ; raise AD instead of OSError(0) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8b98c3effc20dcc4ed08c8f3d33e11ec0f5445b1\"\u003e\u003ccode\u003e8b98c3e\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/700b7e6a4171ae7c775679217205f1d97568ae00\"\u003e\u003ccode\u003e700b7e6\u003c/code\u003e\u003c/a\u003e [macOS] fix potential leaks in error paths (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/7cc7923a1479fb1d32bb25d3e78b465e2695fbf7\"\u003e\u003ccode\u003e7cc7923\u003c/code\u003e\u003c/a\u003e Windows / cmdline(): be more defensive in free()ing in case of error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/v7.0.0...v7.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 3.3.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/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0.rc1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0.rc1\"\u003e4.0.0.rc1\u003c/a\u003e - 2025-09-07\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.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 `flask` from 3.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.2...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `locust-plugins` from 4.7.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/releases\"\u003elocust-plugins's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cp\u003eNo real new features, but the removals are a breaking change, hence the major version bump.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove MqttUser as it is now part of locust core by \u003ca href=\"https://github.com/ionutab\"\u003e\u003ccode\u003e@​ionutab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SvenskaSpel/locust-plugins/pull/224\"\u003eSvenskaSpel/locust-plugins#224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove SocketIOUser now that it is part of locust core, update HttpSession usage to match locust 2.40.0 by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SvenskaSpel/locust-plugins/pull/225\"\u003eSvenskaSpel/locust-plugins#225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove import error catcher for legacy imports from locust plugins.users by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SvenskaSpel/locust-plugins/pull/227\"\u003eSvenskaSpel/locust-plugins#227\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/compare/4.7.0...5.0.0\"\u003ehttps://github.com/SvenskaSpel/locust-plugins/compare/4.7.0...5.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/d60bb991b87663b25dd71ac6fe125019fcbfa325\"\u003e\u003ccode\u003ed60bb99\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SvenskaSpel/locust-plugins/issues/227\"\u003e#227\u003c/a\u003e from SvenskaSpel/remove-import-error-catcher-for-impo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/401308cdcd0bf52d32d63f92d82330117558a064\"\u003e\u003ccode\u003e401308c\u003c/code\u003e\u003c/a\u003e remove no_extras test in one more place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/97fbb45480d4842e02b1f3b1deea174570a639ef\"\u003e\u003ccode\u003e97fbb45\u003c/code\u003e\u003c/a\u003e fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/712d739d08be99964f9bc4875561547c052d5e9d\"\u003e\u003ccode\u003e712d739\u003c/code\u003e\u003c/a\u003e GH actions: use distributor_ex.py instead of rest_ex.py. Remove \u0026quot;no extras\u0026quot; t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/980c93b5601f8e593278087f91ec2e84e750e8ca\"\u003e\u003ccode\u003e980c93b\u003c/code\u003e\u003c/a\u003e Remove legacy import error catcher for imports from locust_plugins.users\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/937f0acf44a46096aefa6dcc75c406519b8a52fc\"\u003e\u003ccode\u003e937f0ac\u003c/code\u003e\u003c/a\u003e Remove RestUser placeholder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/77d9c53f0cd9fdb52df754b4c791514e85914749\"\u003e\u003ccode\u003e77d9c53\u003c/code\u003e\u003c/a\u003e docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/6bf6522d15ccabb9e61ce49c617d211d64128c91\"\u003e\u003ccode\u003e6bf6522\u003c/code\u003e\u003c/a\u003e update readme to mention Users that have been added to core instead\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/0c0382d553f8a52083f3f0af1c48b82b8b487fc0\"\u003e\u003ccode\u003e0c0382d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SvenskaSpel/locust-plugins/issues/225\"\u003e#225\u003c/a\u003e from SvenskaSpel/update-httpsession-usage-to-match-lo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/b1f543242057f0b42ee7b24ae89011159548ead5\"\u003e\u003ccode\u003eb1f5432\u003c/code\u003e\u003c/a\u003e better error message for test_missing_extras\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/compare/4.7.0...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-ofrep` from 0.1.1 to 0.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-ofrep's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-ofrep: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eofrep:\u003c/strong\u003e handle 401, 403, 404 and 5xx errors explicitly and add tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/346\"\u003e#346\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/7e18bc120ee1a310c28c96aac5b608941889d756\"\u003e7e18bc1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-ofrep: v0.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.1.1...openfeature-provider-ofrep/v0.2.0\"\u003e0.2.0\u003c/a\u003e (2025-09-25)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/187\"\u003e#187\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/187\"\u003e#187\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b55cc1e0f823d05a330c12af6861dbd3bec69c3a\"\u003eb55cc1e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereturn default dict if not meta provided (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/304\"\u003e#304\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/05c99eb9948902a6860af848327633d39f1c5293\"\u003e05c99eb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emigrate to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/293\"\u003e#293\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/9590554be4c8a7f77b0c0f20d6b48076c9870f52\"\u003e9590554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate python-sdk (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/289\"\u003e#289\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/f2028f5f81824310a842507a3127a3bb9bc8a984\"\u003ef2028f5\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/open-feature/python-sdk-contrib/commit/4ef10198f1dad5887056f453340f6fb3c9dabc83\"\u003e\u003ccode\u003e4ef1019\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-ofrep 0.3.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.1.1...openfeature-provider-ofrep/v0.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-api` from 1.37.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca hr...\n\n_Description has been truncated_","html_url":"https://github.com/AcheampongStephen/OpenTelemetry/pull/286","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/AcheampongStephen%2FOpenTelemetry/issues/286","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/286/packages"},{"uuid":"4497837028","node_id":"PR_kwDORX-XEs7eGjAu","number":208,"state":"closed","title":"Bump the pip-production-dependencies group across 5 directories with 21 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-22T20:32:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-21T20:52:57.000Z","updated_at":"2026-05-22T20:32:59.000Z","time_to_close":85200,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":21,"packages":[{"name":"grpcio-health-checking","old_version":"1.78.0","new_version":"1.80.0"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.3.0","new_version":"0.3.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-provider-flagd","old_version":"0.2.3","new_version":"0.4.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-distro","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.39.1","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"openai","old_version":"2.17.0","new_version":"2.37.0","repository_url":"https://github.com/openai/openai-python"},{"name":"simplejson","old_version":"3.20.2","new_version":"4.1.1","repository_url":"https://github.com/simplejson/simplejson"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"openfeature-provider-ofrep","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-api","old_version":"1.39.1","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-sdk","old_version":"1.39.1","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 21 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.3.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [openai](https://github.com/openai/openai-python) | `2.17.0` | `2.37.0` |\n| [simplejson](https://github.com/simplejson/simplejson) | `3.20.2` | `4.1.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 4 updates in the /src/llm directory: [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib), [python-dotenv](https://github.com/theskumar/python-dotenv), [python-json-logger](https://github.com/nhairs/python-json-logger) and [flask](https://github.com/pallets/flask).\nBumps the pip-production-dependencies group with 13 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.3.0` | `0.3.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 11 updates in the /src/product-reviews directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.3.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [openai](https://github.com/openai/openai-python) | `2.17.0` | `2.37.0` |\n| [simplejson](https://github.com/simplejson/simplejson) | `3.20.2` | `4.1.1` |\n\nBumps the pip-production-dependencies group with 8 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.3.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n\n\nUpdates `grpcio-health-checking` from 1.78.0 to 1.80.0\n\nUpdates `openfeature-hooks-opentelemetry` from 0.3.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-hooks-opentelemetry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003e0.3.1\u003c/a\u003e (2026-02-17)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e2a2127d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\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/open-feature/python-sdk-contrib/commit/83926dea688eac265405b79c2ec00c9d08c8862e\"\u003e\u003ccode\u003e83926de\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-hooks-opentelemetry 0.3.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e\u003ccode\u003e2a2127d\u003c/code\u003e\u003c/a\u003e fix: Align TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c08b414007f6ce10dcb83249142f054b6d6043d6\"\u003e\u003ccode\u003ec08b414\u003c/code\u003e\u003c/a\u003e chore: align unleash pyproject.toml to others (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/8239b836a25663e0030b3891d0140cb365798a37\"\u003e\u003ccode\u003e8239b83\u003c/code\u003e\u003c/a\u003e feat(provider): add \u003ccode\u003eaws-ssm\u003c/code\u003e provider (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e\u003ccode\u003e61add22\u003c/code\u003e\u003c/a\u003e fix: replace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a835c77f10c82af2157ea15be0ffae7bad79b8ce\"\u003e\u003ccode\u003ea835c77\u003c/code\u003e\u003c/a\u003e chore: relax \u003ccode\u003etypes-requests\u003c/code\u003e and update \u003ccode\u003egrpcio\u003c/code\u003e version constraints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a345ef9f1ea3333e49a173553a9098f5db6746a7\"\u003e\u003ccode\u003ea345ef9\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.2.7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b9c164a2342d101e23e062a81558f02fe0a38c0b\"\u003e\u003ccode\u003eb9c164a\u003c/code\u003e\u003c/a\u003e fix(security): update dependency protobuf to v6.33.5 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2feabd5d70bef2de6661fadf3d74238991a27466\"\u003e\u003ccode\u003e2feabd5\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-unleash 0.1.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/dcb8fadfbc0263e68c381681b5b92cb5fea2dc0d\"\u003e\u003ccode\u003edcb8fad\u003c/code\u003e\u003c/a\u003e chore: add component owners\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-flagd` from 0.2.3 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-flagd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.4.0...openfeature-provider-flagd/v0.4.1\"\u003e0.4.1\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003evarious custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003ec119a77\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eflagd:\u003c/strong\u003e extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e1995534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.3.0...openfeature-provider-flagd/v0.4.0\"\u003e0.4.0\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/83c3e48595c0f44b4a3259719a5d85fde987f492\"\u003e83c3e48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintroduce list for fatal status codes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/362\"\u003e#362\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/96a88ada622fb7941a1d4d58205ff3342180fa9a\"\u003e96a88ad\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.7...openfeature-provider-flagd/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.2.7\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/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/564eb68aa513e6d8b5fb06aa5f632f427b11abe5\"\u003e\u003ccode\u003e564eb68\u003c/code\u003e\u003c/a\u003e fix(security): update dependency pytest to v9.0.3 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.3...openfeature-provider-flagd/v0.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-distro` from 0.60b1 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-exporter-otlp-proto-grpc` from 1.39.1 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/v1.42.1/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.39.1...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/docs/changelog.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e7.2.2 — 2026-01-28\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [Linux]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003epidfd_open()\u003c/code\u003e +\n\u003ccode\u003epoll()\u003c/code\u003e (no busy loop). Requires Linux \u0026gt;= 5.3 and Python \u0026gt;= 3.9.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [macOS], [BSD]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003ekqueue()\u003c/code\u003e (no\nbusy loop).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2701\u003c/code\u003e, [macOS]: fix compilation error on macOS \u0026lt; 10.7. (patch by\n:user:\u003ccode\u003eSergey Fedorov \u0026lt;barracuda156\u0026gt;\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2707\u003c/code\u003e, [macOS]: fix potential memory leaks in error paths of\n:meth:\u003ccode\u003eProcess.memory_full_info\u003c/code\u003e and :meth:\u003ccode\u003eProcess.threads\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2708\u003c/code\u003e, [macOS]: :meth:\u003ccode\u003eProcess.cmdline\u003c/code\u003e and :meth:\u003ccode\u003eProcess.environ\u003c/code\u003e may\nfail with \u003ccode\u003eOSError: [Errno 0] Undefined error\u003c/code\u003e (from\n\u003ccode\u003esysctl(KERN_PROCARGS2)\u003c/code\u003e). They now raise :exc:\u003ccode\u003eAccessDenied\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.1 — 2025-12-29\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2699\u003c/code\u003e, [FreeBSD], [NetBSD]: :func:\u003ccode\u003eheap_info\u003c/code\u003e does not detect small\nallocations (\u0026lt;= 1K). In order to fix that, we now flush internal jemalloc\ncache before fetching the metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.0 — 2025-12-23\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e1275\u003c/code\u003e: new :func:\u003ccode\u003eheap_info\u003c/code\u003e and :func:\u003ccode\u003eheap_trim\u003c/code\u003e functions, providing\ndirect access to the platform's native C :term:\u003ccode\u003eheap\u003c/code\u003e allocator (glibc,\nmimalloc, libmalloc). Useful to create tools to detect memory leaks.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2403\u003c/code\u003e, [Linux]: publish wheels for Linux musl.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2680\u003c/code\u003e: unit tests are no longer installed / part of the distribution.\nThey now live under \u003ccode\u003etests/\u003c/code\u003e instead of \u003ccode\u003epsutil/tests\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2684\u003c/code\u003e, [FreeBSD], [critical]: compilation fails on FreeBSD 14 due to\nmissing include.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2691\u003c/code\u003e, [Windows]: fix memory leak in :func:\u003ccode\u003enet_if_stats\u003c/code\u003e due to missing\n\u003ccode\u003ePy_CLEAR\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eCompatibility notes\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9eea97dd6f1d16ea33f5144c8925f1ce7a0688e1\"\u003e\u003ccode\u003e9eea97d\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/938ac647418f09e4e610b2c755741316713c5592\"\u003e\u003ccode\u003e938ac64\u003c/code\u003e\u003c/a\u003e Rm sphinxcontrib.googleanalytics; override layout.html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9dcbb7e60e650f0ab0cb52154b0a12c70f6a1e4c\"\u003e\u003ccode\u003e9dcbb7e\u003c/code\u003e\u003c/a\u003e Add sphinxcontrib-googleanalytics to requirements.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/76eaf9ae0f2868569c14b46f4165310885a40a15\"\u003e\u003ccode\u003e76eaf9a\u003c/code\u003e\u003c/a\u003e Try to add google analytics to doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/de1cafa56f54e97ca557993155e76dd98877e136\"\u003e\u003ccode\u003ede1cafa\u003c/code\u003e\u003c/a\u003e Update doc mentioning Process.wait() internal details\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/bb30943b0336a16f28437ec549c15a8ad2830cca\"\u003e\u003ccode\u003ebb30943\u003c/code\u003e\u003c/a\u003e Refact can_use_pidfd_open() and can_use_kqueue()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/a571717d6520d436273c8cb34ca871db4bfa508a\"\u003e\u003ccode\u003ea571717\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2708\"\u003e#2708\u003c/a\u003e, macos / cmdline / environ; raise AD instead of OSError(0) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8b98c3effc20dcc4ed08c8f3d33e11ec0f5445b1\"\u003e\u003ccode\u003e8b98c3e\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/700b7e6a4171ae7c775679217205f1d97568ae00\"\u003e\u003ccode\u003e700b7e6\u003c/code\u003e\u003c/a\u003e [macOS] fix potential leaks in error paths (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/7cc7923a1479fb1d32bb25d3e78b465e2695fbf7\"\u003e\u003ccode\u003e7cc7923\u003c/code\u003e\u003c/a\u003e Windows / cmdline(): be more defensive in free()ing in case of error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/v7.0.0...v7.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 4.0.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/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\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/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.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 `psycopg2-binary` from 2.9.11 to 2.9.12\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2-binary's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.12\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite loop with malformed interval (:ticket:\u003ccode\u003e1835\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/3a6d9d6ddc6b53eaa80b712f5fa6b23abbdc38db\"\u003e\u003ccode\u003e3a6d9d6\u003c/code\u003e\u003c/a\u003e ci: include almalinux in whieel building\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ebca6bf0f86bc6cbdc86de1eb3a53eaf49966d86\"\u003e\u003ccode\u003eebca6bf\u003c/code\u003e\u003c/a\u003e chore: bump to version 3.9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/0196f02cc9512df8de3c941f87d27bda98f9f7af\"\u003e\u003ccode\u003e0196f02\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/cibuildwheel from 3.3.1 to 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d157bdc2235a42dc1742936dbb0f5cfc8e4d2eb7\"\u003e\u003ccode\u003ed157bdc\u003c/code\u003e\u003c/a\u003e build(deps): bump docker/setup-qemu-action from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/7fccc0f5066a40dea530512abbf02621f4182b81\"\u003e\u003ccode\u003e7fccc0f\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d52a61eb2e6095fc1b9891bfcca44ebfac509e55\"\u003e\u003ccode\u003ed52a61e\u003c/code\u003e\u003c/a\u003e chore: bump dependency libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/b231d726a01d55e07ec3620b2b82f4a2da37ba62\"\u003e\u003ccode\u003eb231d72\u003c/code\u003e\u003c/a\u003e chore: fix building binary images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/6d76e8479f0f522c2e07ce0e2701030d8fd63785\"\u003e\u003ccode\u003e6d76e84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1836\"\u003e#1836\u003c/a\u003e from psycopg/fix-1835\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f7e314c7ab418ab9b9956e694956089a49c5c3b9\"\u003e\u003ccode\u003ef7e314c\u003c/code\u003e\u003c/a\u003e fix: overflow in malformed interval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/eb905c124b75f2a5183d22177b85af20914b0f17\"\u003e\u003ccode\u003eeb905c1\u003c/code\u003e\u003c/a\u003e docs: replace bare except clause with except Exception\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openai` from 2.17.0 to 2.37.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.37.0\u003c/h2\u003e\n\u003ch2\u003e2.37.0 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0\"\u003ev2.36.0...v2.37.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 service_tier parameter to responses compact method (\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e625827c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal/types:\u003c/strong\u003e support eagerly validating pydantic iterators (\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e7e527bc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary client_id when using workload identity provider for auth (\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003ec39ea8d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add missing f-string prefix in file type error message (\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003ec85ebd9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.36.0\u003c/h2\u003e\n\u003ch2\u003e2.36.0 (2026-05-07)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.35.1...v2.36.0\"\u003ev2.35.1...v2.36.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/13c639cc7d57e4fbd4406563511e15eeb88a54b2\"\u003e13c639c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e realtime 2 (\u003ca href=\"https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e\"\u003e8fe0ab8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.35.1\u003c/h2\u003e\n\u003ch2\u003e2.35.1 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.35.0...v2.35.1\"\u003ev2.35.0...v2.35.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix imagegen \u003ccode\u003esize\u003c/code\u003e enum regression (\u003ca href=\"https://github.com/openai/openai-python/commit/44846536bc3b02c393daa5bae70a85de04c7f621\"\u003e4484653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.35.0\u003c/h2\u003e\n\u003ch2\u003e2.35.0 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.34.0...v2.35.0\"\u003ev2.34.0...v2.35.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update image 2 (\u003ca href=\"https://github.com/openai/openai-python/commit/0ba55d7569565045426e1587906a70d5682a4bba\"\u003e0ba55d7\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/72bf67acbc9f030c20db3d5a1a74ea6d67d55f51\"\u003e72bf67a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove legacy python cli (\u003ca href=\"https://github.com/openai/openai-python/commit/32f36e447d02c3124af8ab48fcc3537df2fed66e\"\u003e32f36e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erename legacy python cli entrypoint (\u003ca href=\"https://github.com/openai/openai-python/commit/a3b182d6d2c2e6fe1d53ca7550b2d43e0f8b2cd3\"\u003ea3b182d\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/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.37.0 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0\"\u003ev2.36.0...v2.37.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 service_tier parameter to responses compact method (\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e625827c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal/types:\u003c/strong\u003e support eagerly validating pydantic iterators (\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e7e527bc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary client_id when using workload identity provider for auth (\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003ec39ea8d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add missing f-string prefix in file type error message (\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003ec85ebd9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.36.0 (2026-05-07)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.35.1...v2.36.0\"\u003ev2.35.1...v2.36.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/13c639cc7d57e4fbd4406563511e15eeb88a54b2\"\u003e13c639c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e realtime 2 (\u003ca href=\"https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e\"\u003e8fe0ab8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.35.1 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.35.0...v2.35.1\"\u003ev2.35.0...v2.35.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix imagegen \u003ccode\u003esize\u003c/code\u003e enum regression (\u003ca href=\"https://github.com/openai/openai-python/commit/44846536bc3b02c393daa5bae70a85de04c7f621\"\u003e4484653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.35.0 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.34.0...v2.35.0\"\u003ev2.34.0...v2.35.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update image 2 (\u003ca href=\"https://github.com/openai/openai-python/commit/0ba55d7569565045426e1587906a70d5682a4bba\"\u003e0ba55d7\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/72bf67acbc9f030c20db3d5a1a74ea6d67d55f51\"\u003e72bf67a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove legacy python cli (\u003ca href=\"https://github.com/openai/openai-python/commit/32f36e447d02c3124af8ab48fcc3537df2fed66e\"\u003e32f36e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erename legacy python cli entrypoint (\u003ca href=\"https://github.com/openai/openai-python/commit/a3b182d6d2c2e6fe1d53ca7550b2d43e0f8b2cd3\"\u003ea3b182d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\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/openai/openai-python/commit/658be644f48028ea3c7b1545034470fda75a70ba\"\u003e\u003ccode\u003e658be64\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3213\"\u003e#3213\u003c/a\u003e from openai/release-please--branches--main--changes-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/8a7cac34cbc64fe02854beb3659f4bb5f46815f9\"\u003e\u003ccode\u003e8a7cac3\u003c/code\u003e\u003c/a\u003e release: 2.37.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/9b4bf8edbac6aab217f1ac4436a47cbca2cad43b\"\u003e\u003ccode\u003e9b4bf8e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/openai/openai-python/issues/1903\"\u003e#1903\u003c/a\u003e from stainless-sdks/dev/jtian/remove-unnecessary-params\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003e\u003ccode\u003ec39ea8d\u003c/code\u003e\u003c/a\u003e feat: Remove unnecessary client_id when using workload identity provider for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e\u003ccode\u003e7e527bc\u003c/code\u003e\u003c/a\u003e feat(internal/types): support eagerly validating pydantic iterators\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e\u003ccode\u003e625827c\u003c/code\u003e\u003c/a\u003e feat(api): add service_tier parameter to responses compact method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003e\u003ccode\u003ec85ebd9\u003c/code\u003e\u003c/a\u003e fix(client): add missing f-string prefix in file type error message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/38d75d74a5626472cd7d1be9705ea8aba29a6b22\"\u003e\u003ccode\u003e38d75d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3205\"\u003e#3205\u003c/a\u003e from openai/release-please--branches--main--changes-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/ff683ffbeba94fc01d93966b774c05a3471f2495\"\u003e\u003ccode\u003eff683ff\u003c/code\u003e\u003c/a\u003e release: 2.36.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e\"\u003e\u003ccode\u003e8fe0ab8\u003c/code\u003e\u003c/a\u003e feat(api): realtime 2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.17.0...v2.37.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `simplejson` from 3.20.2 to 4.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/simplejson/simplejson/releases\"\u003esimplejson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 2.7 wheel builds for Windows platforms by \u003ca href=\"https://github.com/etrepum\"\u003e\u003ccode\u003e@​etrepum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/378\"\u003esimplejson/simplejson#378\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/simplejson/simplejson/compare/v4.1.0...v4.1.1\"\u003ehttps://github.com/simplejson/simplejson/compare/v4.1.0...v4.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAccelerate indented encoding in the C extension; release 4.1.0 by \u003ca href=\"https://github.com/etrepum\"\u003e\u003ccode\u003e@​etrepum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/376\"\u003esimplejson/simplejson#376\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/simplejson/simplejson/compare/v4.0.1...v4.1.0\"\u003ehttps://github.com/simplejson/simplejson/compare/v4.0.1...v4.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExclude Pyodide wheels from PyPI uploads by \u003ca href=\"https://github.com/etrepum\"\u003e\u003ccode\u003e@​etrepum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/375\"\u003esimplejson/simplejson#375\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/simplejson/simplejson/compare/v4.0.0...v4.0.1\"\u003ehttps://github.com/simplejson/simplejson/compare/v4.0.0...v4.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eVersion 4.0.0 released 2026-04-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esimplejson 4 requires Python 2.7 or Python 3.8+. Older Python\nversions (2.5, 2.6, 3.0-3.7) are no longer supported. pip will\nnot install simplejson 4 on unsupported versions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe C extension now uses heap types and per-module state instead of\nstatic types and global state. This is required for free-threading\nsupport and sub-interpreter isolation. The Python-level API is\nunchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFull support for Python 3.13+ free-threading (PEP 703). The C\nextension is now safe to use with the GIL disabled (python3.14t):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eConverted all static types to heap types with per-module state\u003c/li\u003e\n\u003cli\u003eAdded per-object critical sections to scanner and encoder\u003c/li\u003e\n\u003cli\u003eAdded free-threading-safe dict operations for Python 3.13+\u003c/li\u003e\n\u003cli\u003eUnified per-module state management and templated parser\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/363\"\u003esimplejson/simplejson#363\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/364\"\u003esimplejson/simplejson#364\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/365\"\u003esimplejson/simplejson#365\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/367\"\u003esimplejson/simplejson#367\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/369\"\u003esimplejson/simplejson#369\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNumerous C extension memory safety fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix use-after-free and leak in encoder ident handling\u003c/li\u003e\n\u003cli\u003eFix NULL dereferences on OOM in module init and static string init\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/simplejson/simplejson/blob/main/CHANGES.txt\"\u003esimplejson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion 4.1.1 released 2026-04-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ebuild_wheels_py27\u003c/code\u003e CI job now also builds Python 2.7 wheels\nfor Windows AMD64 and Windows x86, joining the existing Py2.7\nmanylinux1 / manylinux2010 x86_64 wheels. This unblocks offline /\n\u003ccode\u003e--no-index\u003c/code\u003e installs on Py2.7-on-Windows (the original\nreporter's case), which previously had no matching binary wheel on\nPyPI, fell through to the sdist, and failed on the PEP 517\nisolated-build step complaining that \u003ccode\u003esetuptools\u0026gt;=42\u003c/code\u003e was not in\nthe wheelhouse.\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/377\"\u003esimplejson/simplejson#377\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 4.1.0 released 2026-04-22\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe C extension now accelerates encoding when \u003ccode\u003eindent=\u003c/code\u003e is set.\nPreviously the encoder fell back to the pure-Python implementation\nwhenever a non-None \u003ccode\u003eindent\u003c/code\u003e was passed; now the C encoder emits\nthe newline-plus-indent prefix, the level-aware item separator, and\nthe closing indent directly.  A representative nested-dict workload\nbenchmarks about 4-5x faster end-to-end, and the \u003ccode\u003eindent=0\u003c/code\u003e and\nempty-container edge cases continue to match the Python output\nbyte-for-byte.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe C extension now emits PEP 678 \u003ccode\u003eexc.add_note()\u003c/code\u003e annotations on\nserialization failures, matching the pure-Python encoder.  A chained\nerror on \u003ccode\u003e{'a': [1, object(), 3]}\u003c/code\u003e produces the same three notes\n(\u003ccode\u003ewhen serializing object object\u003c/code\u003e, \u003ccode\u003ewhen serializing list item 1\u003c/code\u003e,\n\u003ccode\u003ewhen serializing dict item 'a'\u003c/code\u003e) whether the speedups are loaded\nor not, so the add_note assertions in \u003ccode\u003etest_errors.py\u003c/code\u003e no longer\nneed \u003ccode\u003eindent=2\u003c/code\u003e to force the Python path.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 4.0.1 released 2026-04-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSkip uploading Pyodide/wasm wheels to PyPI, which rejects them with\n\u0026quot;unsupported platform tag 'pyodide_2024_0_wasm32'\u0026quot;. The wheels are\nstill built in CI and preserved as workflow artifacts.\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/375\"\u003esimplejson/simplejson#375\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 4.0.0 released 2026-04-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esimplejson 4 requires Python 2.7 or Python 3.8+. Older Python\nversions (2.5, 2.6, 3.0-3.7) are no longer supported. pip will\nnot install simplejson 4 on unsupported versions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe C extension now uses heap types and per-module state instead of\nstatic types and global state. This is required for free-threading\nsupport and sub-interpreter isolation. The Python-level API is\nunchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFull support for Python 3.13+ free-threading (PEP 703). The C\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/639b2ee73b2de6b385fcd4d44e0e08054a4d8a0e\"\u003e\u003ccode\u003e639b2ee\u003c/code\u003e\u003c/a\u003e Add Python 2.7 wheel builds for Windows platforms (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/0fd3185ce301bdefe61bbbf510536fa9127962fb\"\u003e\u003ccode\u003e0fd3185\u003c/code\u003e\u003c/a\u003e Accelerate indented encoding in the C extension; release 4.1.0 (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/376\"\u003e#376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/19b5f94f235d3ac11646b82c02f292845b2aa184\"\u003e\u003ccode\u003e19b5f94\u003c/code\u003e\u003c/a\u003e Exclude Pyodide wheels from PyPI uploads (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/1608c050bbc2ae67ddfe913dad83bed7d588aa27\"\u003e\u003ccode\u003e1608c05\u003c/code\u003e\u003c/a\u003e Use JSONDecodeError for out-of-range end indices in C scanstring (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/3bba17935f12695355b5280df2a93bf963b704dd\"\u003e\u003ccode\u003e3bba179\u003c/code\u003e\u003c/a\u003e Encoder parity fixes (for_json/_asdict) and TSan stress CI job (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/7b22d65b92ac7e69f740f59fe11548216b79c098\"\u003e\u003ccode\u003e7b22d65\u003c/code\u003e\u003c/a\u003e Error parity for the C and Python scanstring in surrogate and truncated strin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/825100a7fc498dafae31d10bef3e3cfaba1fdc5b\"\u003e\u003ccode\u003e825100a\u003c/code\u003e\u003c/a\u003e Release version 4.0.0: free-threading, CPython json parity, Python 2.7 fixes ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/0dbb9d875127a9009f01a4036fa950b0a5f4f589\"\u003e\u003ccode\u003e0dbb9d8\u003c/code\u003e\u003c/a\u003e C extension: dead code cleanup, fast paths for dict/list/string encoding, cor...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/e2e5f0b2d3bae3fd9a56bbaab42f6d75fb980ad5\"\u003e\u003ccode\u003ee2e5f0b\u003c/code\u003e\u003c/a\u003e Add Python 3.13+ free-threading support to dict operations (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/e817370a91f4f51a0aec5f0f7bdeb1ca601ed101\"\u003e\u003ccode\u003ee817370\u003c/code\u003e\u003c/a\u003e Fix free-threading (3.14t) crashes: heap types, unified per-module state, tem...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/simplejson/simplejson/compare/v3.20.2...v4.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 3.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Incre...\n\n_Description has been truncated_","html_url":"https://github.com/RANJITHKUMARJN/opentelemetrymain/pull/208","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/RANJITHKUMARJN%2Fopentelemetrymain/issues/208","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/208/packages"},{"uuid":"4491187680","node_id":"PR_kwDOSSwFHc7dw07M","number":3,"state":"closed","title":"Bump the pip group across 23 directories with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-21T02:22:30.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-21T02:19:12.000Z","updated_at":"2026-05-21T02:22:32.000Z","time_to_close":198,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":8,"packages":[{"name":"jinja2","old_version":"3.1.3","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"flask","old_version":"2.2.5","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"werkzeug","old_version":"2.2.3","new_version":"3.1.6","repository_url":"https://github.com/pallets/werkzeug"},{"name":"cryptography","old_version":"42.0.5","new_version":"46.0.7","repository_url":"https://github.com/pyca/cryptography"},{"name":"pillow","old_version":"9.5.0","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"zipp","old_version":"3.15.0","new_version":"3.19.1","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 2 updates in the /benchmarks/XBEN-005-24/app directory: [idna](https://github.com/kjd/idna) and [jinja2](https://github.com/pallets/jinja).\nBumps the pip group with 3 updates in the /benchmarks/XBEN-007-24/app directory: [jinja2](https://github.com/pallets/jinja), [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\nBumps the pip group with 2 updates in the /benchmarks/XBEN-021-24/app directory: [idna](https://github.com/kjd/idna) and [jinja2](https://github.com/pallets/jinja).\nBumps the pip group with 2 updates in the /benchmarks/XBEN-058-24/app directory: [idna](https://github.com/kjd/idna) and [jinja2](https://github.com/pallets/jinja).\nBumps the pip group with 1 update in the /benchmarks/XBEN-062-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 2 updates in the /benchmarks/XBEN-063-24/app/website directory: [flask](https://github.com/pallets/flask) and [pymysql](https://github.com/PyMySQL/PyMySQL).\nBumps the pip group with 1 update in the /benchmarks/XBEN-064-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-065-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-068-24/app directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-070-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-073-24/app directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-074-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 2 updates in the /benchmarks/XBEN-076-24/ssti-demo-app directory: [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\nBumps the pip group with 1 update in the /benchmarks/XBEN-082-24/api directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-082-24/app directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-087-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 3 updates in the /benchmarks/XBEN-089-24/app directory: [jinja2](https://github.com/pallets/jinja), [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\nBumps the pip group with 4 updates in the /benchmarks/XBEN-091-24/app directory: [jinja2](https://github.com/pallets/jinja), [flask](https://github.com/pallets/flask), [werkzeug](https://github.com/pallets/werkzeug) and [cryptography](https://github.com/pyca/cryptography).\nBumps the pip group with 3 updates in the /benchmarks/XBEN-094-24/app directory: [jinja2](https://github.com/pallets/jinja), [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\nBumps the pip group with 3 updates in the /benchmarks/XBEN-100-24/app directory: [jinja2](https://github.com/pallets/jinja), [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\nBumps the pip group with 6 updates in the /benchmarks/XBEN-101-24/app directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.3` | `3.1.6` |\n| [flask](https://github.com/pallets/flask) | `2.2.5` | `3.1.3` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `2.2.3` | `3.1.6` |\n| [cryptography](https://github.com/pyca/cryptography) | `42.0.5` | `46.0.7` |\n| [pillow](https://github.com/python-pillow/Pillow) | `9.5.0` | `12.2.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.15.0` | `3.19.1` |\n\nBumps the pip group with 1 update in the /benchmarks/XBEN-102-24/app directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-103-24/app directory: [flask](https://github.com/pallets/flask).\n\nUpdates `idna` from 3.7 to 3.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.13\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.12\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.9\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for certain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no longer testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.8\"\u003ehttps://github.com/kjd/idna/compare/v3.7...v3.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.15 (2026-05-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnforce DNS-length cap on individual labels early in \u003ccode\u003echeck_label\u003c/code\u003e,\nshort-circuiting contextual-rule processing for oversized input\nwhile staying compatible with UTS 46 usage.\u003c/li\u003e\n\u003cli\u003eTidy core helpers: hoist bidi category sets to module-level\nfrozensets (avoiding per-codepoint list construction), simplify\nlength checks, and reuse the shared \u003ccode\u003e_unicode_dots_re\u003c/code\u003e from\n\u003ccode\u003eidna.core\u003c/code\u003e in the codec module.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eraise ... from err\u003c/code\u003e for proper exception chaining and\nswitch internal string formatting to f-strings.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eflit_core\u003c/code\u003e 4.x in the build backend.\u003c/li\u003e\n\u003cli\u003eExpand the ruff lint set (flake8-bugbear, flake8-simplify,\npyupgrade, perflint) and apply the surfaced fixes; pin lint CI\nto Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration for GitHub Actions.\u003c/li\u003e\n\u003cli\u003eConvert README and HISTORY from reStructuredText to Markdown.\u003c/li\u003e\n\u003cli\u003eReference CVE-2026-45409 for the 3.14 advisory in place of the\ninitial GHSA identifier.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Felix Yan, Stan Ulbrych, and metsw24-max for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.14 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\nof the CVE-2024-3651 mitigation. [CVE-2026-45409]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Stan Ulbrych for reporting the issue.\u003c/p\u003e\n\u003ch2\u003e3.13 (2026-04-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect classification error for codepoint U+A7F1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12 (2026-04-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0.0.\u003c/li\u003e\n\u003cli\u003eIssue a deprecation warning for the transitional argument.\u003c/li\u003e\n\u003cli\u003eAdded lazy-loading to provide some performance improvements.\u003c/li\u003e\n\u003cli\u003eRemoved vestiges of code related to Python 2 support, including\nsegmentation of data structures specific to Jython.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Rodrigo Nogueira for contributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.11 (2025-10-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/af30a092e158181d0b35ac66dfa813788126bdd8\"\u003e\u003ccode\u003eaf30a09\u003c/code\u003e\u003c/a\u003e Release 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/30314d4628744ca14cf2b5820564e5127a9f86f2\"\u003e\u003ccode\u003e30314d4\u003c/code\u003e\u003c/a\u003e Pre-release 3.15rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05d4b219aa9eddc47371fcbd2000f0301016f3e9\"\u003e\u003ccode\u003e05d4b21\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/237\"\u003e#237\u003c/a\u003e from kjd/convert-docs-to-markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2987fdba1962bbb2358399e0084ba062b98a0bee\"\u003e\u003ccode\u003e2987fdb\u003c/code\u003e\u003c/a\u003e Convert README and HISTORY from reStructuredText to Markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/59fa8002d514bf4a5ce7b58f67b9ec587d53fa9c\"\u003e\u003ccode\u003e59fa800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/236\"\u003e#236\u003c/a\u003e from kjd/dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/def69834ced5d4b3c50439d8b99c4c856ec19ca2\"\u003e\u003ccode\u003edef6983\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bbd8004a797185d8c56bb555cd5c88fde05e0631\"\u003e\u003ccode\u003ebbd8004\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/234\"\u003e#234\u003c/a\u003e from StanFromIreland/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/edd07c05024344a6ccb517414ccb36683aee99fc\"\u003e\u003ccode\u003eedd07c0\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.35.2 to 4.35.2 in the actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5557db030c11bdec50d62aa5f631d705d33ba123\"\u003e\u003ccode\u003e5557db0\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f11746cf4981d25123ef7830d3ee60f07de8ae3d\"\u003e\u003ccode\u003ef11746c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/235\"\u003e#235\u003c/a\u003e from StanFromIreland/patch-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.4 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.4...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.4 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.4...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 3.0.3 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.3...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `werkzeug` from 3.0.3 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/releases\"\u003ewerkzeug's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.6 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.6/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in multi-segment paths. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x\"\u003eGHSA-29vq-49wr-vm6x\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.5/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/43?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/43?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless of extension or surrounding spaces. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-87hc-h4r5-73f7\"\u003eGHSA-87hc-h4r5-73f7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary. This fixes the previous attempt, which caused incorrect content lengths. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3077\"\u003e#3077\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAttributeError\u003c/code\u003e when initializing \u003ccode\u003eDebuggedApplication\u003c/code\u003e with \u003ccode\u003epin_security=False\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3075\"\u003e#3075\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.4/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/42?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/42?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special device names. This prevents reading from these when using \u003ccode\u003esend_from_directory\u003c/code\u003e. \u003ccode\u003esecure_filename\u003c/code\u003e already prevented writing to these. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-hgf8-39gv-g3f2\"\u003eghsa-hgf8-39gv-g3f2\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe debugger pin fails after 10 attempts instead of 11. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3020\"\u003e#3020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3065\"\u003e#3065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CPU usage during Watchdog reloader. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3054\"\u003e#3054\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.json\u003c/code\u003e annotation is more accurate. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3067\"\u003e#3067\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTraceback rendering handles when the line number is beyond the available source lines. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3044\"\u003e#3044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eHTTPException.get_response\u003c/code\u003e annotation and doc better conveys the distinction between WSGI and sans-IO responses. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3056\"\u003e#3056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.3/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3\"\u003ehttps://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/41?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/41?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInitial data passed to \u003ccode\u003eMultiDict\u003c/code\u003e and similar interfaces only accepts \u003ccode\u003elist\u003c/code\u003e, \u003ccode\u003etuple\u003c/code\u003e, or \u003ccode\u003eset\u003c/code\u003e when passing multiple values. It had been changed to accept any \u003ccode\u003eCollection\u003c/code\u003e, but this matched types that should be treated as single values, such as \u003ccode\u003ebytes\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/2994\"\u003e#2994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen the \u003ccode\u003eHost\u003c/code\u003e header is not set and \u003ccode\u003eRequest.host\u003c/code\u003e falls back to the WSGI \u003ccode\u003eSERVER_NAME\u003c/code\u003e value, if that value is an IPv6 address it is wrapped in \u003ccode\u003e[]\u003c/code\u003e to match the \u003ccode\u003eHost\u003c/code\u003e header. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/2993\"\u003e#2993\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.2/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2\"\u003ehttps://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/blob/main/CHANGES.rst\"\u003ewerkzeug's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in\nmulti-segment paths. :ghsa:\u003ccode\u003e29vq-49wr-vm6x\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.make_conditional\u003c/code\u003e sets the \u003ccode\u003eAccept-Ranges\u003c/code\u003e header even if it\nis not a satisfiable range request. :issue:\u003ccode\u003e3108\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2026-01-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless\nof extension or surrounding spaces. :ghsa:\u003ccode\u003e87hc-h4r5-73f7\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary.\nThis fixes the previous attempt, which caused incorrect content lengths.\n:issue:\u003ccode\u003e3065\u003c/code\u003e :issue:\u003ccode\u003e3077\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAttributeError\u003c/code\u003e when initializing \u003ccode\u003eDebuggedApplication\u003c/code\u003e with\n\u003ccode\u003epin_security=False\u003c/code\u003e. :issue:\u003ccode\u003e3075\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.4\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-28\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special device names. This prevents\nreading from these when using \u003ccode\u003esend_from_directory\u003c/code\u003e. \u003ccode\u003esecure_filename\u003c/code\u003e\nalready prevented writing to these. :ghsa:\u003ccode\u003ehgf8-39gv-g3f2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe debugger pin fails after 10 attempts instead of 11. :pr:\u003ccode\u003e3020\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary.\n:issue:\u003ccode\u003e3065\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove CPU usage during Watchdog reloader. :issue:\u003ccode\u003e3054\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.json\u003c/code\u003e annotation is more accurate. :issue:\u003ccode\u003e3067\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTraceback rendering handles when the line number is beyond the available\nsource lines. :issue:\u003ccode\u003e3044\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eHTTPException.get_response\u003c/code\u003e annotation and doc better conveys the\ndistinction between WSGI and sans-IO responses. :issue:\u003ccode\u003e3056\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInitial data passed to \u003ccode\u003eMultiDict\u003c/code\u003e and similar interfaces only accepts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/04da1b5221b7a7b57e82246e4b5741d37a6b2e56\"\u003e\u003ccode\u003e04da1b5\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/f407712fdc60a09c2b3f4fe7db557703e5d9338d\"\u003e\u003ccode\u003ef407712\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/f54fe98026253e70fbbcd35a6b52fb67cfff1c03\"\u003e\u003ccode\u003ef54fe98\u003c/code\u003e\u003c/a\u003e safe_join prevents Windows special device names in multi-segment paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/d005985ef69ffe3275eda8fb6fb25e074dbe871b\"\u003e\u003ccode\u003ed005985\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/8565c2cbd6681ae8463e77d4fc0795324a7fdae7\"\u003e\u003ccode\u003e8565c2c\u003c/code\u003e\u003c/a\u003e document rule priority (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/3febc7e90072bffe04c27e6b7478dfc4f88930df\"\u003e\u003ccode\u003e3febc7e\u003c/code\u003e\u003c/a\u003e document rule priority\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/2525b827646c10ab7adb334664e6a4af1b769181\"\u003e\u003ccode\u003e2525b82\u003c/code\u003e\u003c/a\u003e remove state machine docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/4abfbd553cdeb6d4e6fa693340d52b13c884079f\"\u003e\u003ccode\u003e4abfbd5\u003c/code\u003e\u003c/a\u003e rewrite build docstring (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3097\"\u003e#3097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/161c18b2a8800ae6ef377fb3cbdb933a878fea67\"\u003e\u003ccode\u003e161c18b\u003c/code\u003e\u003c/a\u003e rewrite build docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/86e11c29e44726dae524cd9db11549b3b1ad681d\"\u003e\u003ccode\u003e86e11c2\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/werkzeug/compare/3.0.3...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.7 to 3.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.13\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.12\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.9\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for certain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no longer testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.8\"\u003ehttps://github.com/kjd/idna/compare/v3.7...v3.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.15 (2026-05-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnforce DNS-length cap on individual labels early in \u003ccode\u003echeck_label\u003c/code\u003e,\nshort-circuiting contextual-rule processing for oversized input\nwhile staying compatible with UTS 46 usage.\u003c/li\u003e\n\u003cli\u003eTidy core helpers: hoist bidi category sets to module-level\nfrozensets (avoiding per-codepoint list construction), simplify\nlength checks, and reuse the shared \u003ccode\u003e_unicode_dots_re\u003c/code\u003e from\n\u003ccode\u003eidna.core\u003c/code\u003e in the codec module.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eraise ... from err\u003c/code\u003e for proper exception chaining and\nswitch internal string formatting to f-strings.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eflit_core\u003c/code\u003e 4.x in the build backend.\u003c/li\u003e\n\u003cli\u003eExpand the ruff lint set (flake8-bugbear, flake8-simplify,\npyupgrade, perflint) and apply the surfaced fixes; pin lint CI\nto Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration for GitHub Actions.\u003c/li\u003e\n\u003cli\u003eConvert README and HISTORY from reStructuredText to Markdown.\u003c/li\u003e\n\u003cli\u003eReference CVE-2026-45409 for the 3.14 advisory in place of the\ninitial GHSA identifier.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Felix Yan, Stan Ulbrych, and metsw24-max for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.14 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\nof the CVE-2024-3651 mitigation. [CVE-2026-45409]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Stan Ulbrych for reporting the issue.\u003c/p\u003e\n\u003ch2\u003e3.13 (2026-04-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect classification error for codepoint U+A7F1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12 (2026-04-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0.0.\u003c/li\u003e\n\u003cli\u003eIssue a deprecation warning for the transitional argument.\u003c/li\u003e\n\u003cli\u003eAdded lazy-loading to provide some performance improvements.\u003c/li\u003e\n\u003cli\u003eRemoved vestiges of code related to Python 2 support, including\nsegmentation of data structures specific to Jython.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Rodrigo Nogueira for contributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.11 (2025-10-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/af30a092e158181d0b35ac66dfa813788126bdd8\"\u003e\u003ccode\u003eaf30a09\u003c/code\u003e\u003c/a\u003e Release 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/30314d4628744ca14cf2b5820564e5127a9f86f2\"\u003e\u003ccode\u003e30314d4\u003c/code\u003e\u003c/a\u003e Pre-release 3.15rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05d4b219aa9eddc47371fcbd2000f0301016f3e9\"\u003e\u003ccode\u003e05d4b21\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/237\"\u003e#237\u003c/a\u003e from kjd/convert-docs-to-markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2987fdba1962bbb2358399e0084ba062b98a0bee\"\u003e\u003ccode\u003e2987fdb\u003c/code\u003e\u003c/a\u003e Convert README and HISTORY from reStructuredText to Markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/59fa8002d514bf4a5ce7b58f67b9ec587d53fa9c\"\u003e\u003ccode\u003e59fa800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/236\"\u003e#236\u003c/a\u003e from kjd/dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/def69834ced5d4b3c50439d8b99c4c856ec19ca2\"\u003e\u003ccode\u003edef6983\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bbd8004a797185d8c56bb555cd5c88fde05e0631\"\u003e\u003ccode\u003ebbd8004\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/234\"\u003e#234\u003c/a\u003e from StanFromIreland/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/edd07c05024344a6ccb517414ccb36683aee99fc\"\u003e\u003ccode\u003eedd07c0\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.35.2 to 4.35.2 in the actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5557db030c11bdec50d62aa5f631d705d33ba123\"\u003e\u003ccode\u003e5557db0\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f11746cf4981d25123ef7830d3ee60f07de8ae3d\"\u003e\u003ccode\u003ef11746c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/235\"\u003e#235\u003c/a\u003e from StanFromIreland/patch-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.4 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filte...\n\n_Description has been truncated_","html_url":"https://github.com/pellera9/validation-benchmarks/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pellera9%2Fvalidation-benchmarks/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"}],"issue_packages":[{"old_version":"3.1.2","new_version":"3.1.3","update_type":"patch","path":null,"pr_created_at":"2026-06-02T00:37:40.000Z","version_change":"3.1.2 → 3.1.3","issue":{"uuid":"4567378429","node_id":"PR_kwDOQIiWRs7hlHZO","number":277,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-03T23:07:03.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-02T00:37:40.000Z","updated_at":"2026-06-03T23:07:05.000Z","time_to_close":167363,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":18,"packages":[{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"python-json-logger","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-provider-ofrep","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-api","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-sdk","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.81.0"},{"name":"openfeature-provider-flagd","old_version":"0.2.3","new_version":"0.4.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-distro","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 18 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.81.0` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n\nBumps the pip-production-dependencies group with 13 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 8 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.81.0` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n\n\nUpdates `flask` from 3.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.2...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 4.0.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/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\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/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.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 `openfeature-provider-ofrep` from 0.2.0 to 0.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-ofrep's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-ofrep: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eofrep:\u003c/strong\u003e handle 401, 403, 404 and 5xx errors explicitly and add tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/346\"\u003e#346\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/7e18bc120ee1a310c28c96aac5b608941889d756\"\u003e7e18bc1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\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/open-feature/python-sdk-contrib/commit/4ef10198f1dad5887056f453340f6fb3c9dabc83\"\u003e\u003ccode\u003e4ef1019\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-ofrep 0.3.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-hooks-opentelemetry` from 0.2.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-hooks-opentelemetry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003e0.3.1\u003c/a\u003e (2026-02-17)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e2a2127d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2025-12-16)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emigrate to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/293\"\u003e#293\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/9590554be4c8a7f77b0c0f20d6b48076c9870f52\"\u003e9590554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a2ec682a709a4721f8362cfa6a9e6037937761ee\"\u003ea2ec682\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/open-feature/python-sdk-contrib/commit/83926dea688eac265405b79c2ec00c9d08c8862e\"\u003e\u003ccode\u003e83926de\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-hooks-opentelemetry 0.3.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e\u003ccode\u003e2a2127d\u003c/code\u003e\u003c/a\u003e fix: Align TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c08b414007f6ce10dcb83249142f054b6d6043d6\"\u003e\u003ccode\u003ec08b414\u003c/code\u003e\u003c/a\u003e chore: align unleash pyproject.toml to others (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/8239b836a25663e0030b3891d0140cb365798a37\"\u003e\u003ccode\u003e8239b83\u003c/code\u003e\u003c/a\u003e feat(provider): add \u003ccode\u003eaws-ssm\u003c/code\u003e provider (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e\u003ccode\u003e61add22\u003c/code\u003e\u003c/a\u003e fix: replace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a835c77f10c82af2157ea15be0ffae7bad79b8ce\"\u003e\u003ccode\u003ea835c77\u003c/code\u003e\u003c/a\u003e chore: relax \u003ccode\u003etypes-requests\u003c/code\u003e and update \u003ccode\u003egrpcio\u003c/code\u003e version constraints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a345ef9f1ea3333e49a173553a9098f5db6746a7\"\u003e\u003ccode\u003ea345ef9\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.2.7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b9c164a2342d101e23e062a81558f02fe0a38c0b\"\u003e\u003ccode\u003eb9c164a\u003c/code\u003e\u003c/a\u003e fix(security): update dependency protobuf to v6.33.5 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2feabd5d70bef2de6661fadf3d74238991a27466\"\u003e\u003ccode\u003e2feabd5\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-unleash 0.1.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/dcb8fadfbc0263e68c381681b5b92cb5fea2dc0d\"\u003e\u003ccode\u003edcb8fad\u003c/code\u003e\u003c/a\u003e chore: add component owners\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-api` from 1.38.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.38.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-exporter-otlp-proto-grpc` from 1.38.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.38.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-jinja2` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-jinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: update auto-instrumentation to re-inject\ninstrumentation path after init\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4469\"\u003e#4469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add Database client operation duration\nand returned rows metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4481\"\u003e#4481\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove redundant \u003ccode\u003epylint: disable=attribute-defined-outside-init\u003c/code\u003e comments\nand add rule to global \u003ccode\u003e.pylintrc\u003c/code\u003e disable list\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epylint\u003c/code\u003e to \u003ccode\u003e4.0.5\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4244\"\u003e#4244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Use \u003ccode\u003eLogRecord.getMessage()\u003c/code\u003e to\nformat and extract each log record's body text to more closely match the\nexpected usage of the logging system. As a result, all OTel log record bodies\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\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/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-requests` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-requests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: update auto-instrumentation to re-inject\ninstrumentation path after init\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4469\"\u003e#4469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add Database client operation duration\nand returned rows metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4481\"\u003e#4481\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove redundant \u003ccode\u003epylint: disable=attribute-defined-outside-init\u003c/code\u003e comments\nand add rule to global \u003ccode\u003e.pylintrc\u003c/code\u003e disable list\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epylint\u003c/code\u003e to \u003ccode\u003e4.0.5\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4244\"\u003e#4244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Use \u003ccode\u003eLogRecord.getMessage()\u003c/code\u003e to\nformat and extract each log record's body text to more closely match the\nexpected usage of the logging system. As a result, all OTel log record bodies\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\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/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-system-metrics` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-system-metrics's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: update auto-instrumentation to re-inject\ninstrumentation path after init\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4469\"\u003e#4469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add Database client operation duration\nand returned rows metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4481\"\u003e#4481\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove redundant \u003ccode\u003epylint: disable=attribute-defined-outside-init\u003c/code\u003e comments\nand add rule to global \u003ccode\u003e.pylintrc\u003c/code\u003e disable list\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epylint\u003c/code\u003e to \u003ccode\u003e4.0.5\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4244\"\u003e#4244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Use \u003ccode\u003eLogRecord.getMessage()\u003c/code\u003e to\nformat and extract each log record's body text to more closely match the\nexpected usage of the logging system. As a result, all OTel log record bodies\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\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/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-urllib3` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-urllib3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: update auto-instrumentation to re-inject\ninstrumentation path after init\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4469\"\u003e#4469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add Database client operation duration\nand returned rows metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4481\"\u003e#4481\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove redundant \u003ccode\u003epylint: disable=attribute-defined-outside-init\u003c/code\u003e comments\nand add rule to global \u003ccode\u003e.pylintrc\u003c/code\u003e disable list\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epylint\u003c/code\u003e to \u003ccode\u003e4.0.5\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4244\"\u003e#4244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Use \u003ccode\u003eLogRecord.getMessage()\u003c/code\u003e to\nformat and extract each log record's body text to more closely match the\nexpected usage of the logging system. As a result, all OTel log record bodies\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\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/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-sdk` from 1.38.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.38.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-semantic-conventions` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-semantic-conventions's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-logging` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-logging's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: update auto-instrumentation to re-inject\ninstrumentation path after init\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4469\"\u003e#4469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add Database client operation duration\nand returned rows metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4481\"\u003e#4481\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove redundant \u003ccode\u003epylint: disable=attribute-defined-outside-init\u003c/code\u003e comments\nand add rule to global \u003ccode\u003e.pylintrc\u003c/code\u003e disable list\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3839\"\u003e#3839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epylint\u003c/code\u003e to \u003ccode\u003e4.0.5\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4244\"\u003e#4244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Use \u003ccode\u003eLogRecord.getMessage()\u003c/code\u003e to\nformat and extract each log record's body text to more closely match the\nexpected usage of the logging system. As a result, all OTel log record bodies\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\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/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.81.0\n\nUpdates `openfeature-provider-flagd` from 0.2.3 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-flagd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-...\n\n_Description has been truncated_","html_url":"https://github.com/monoscope-tech/oteldemo/pull/277","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/monoscope-tech%2Foteldemo/issues/277","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/277/packages"}},{"old_version":"3.0.3","new_version":"3.1.3","update_type":"minor","path":"/ressources","pr_created_at":"2026-05-31T17:49:17.000Z","version_change":"3.0.3 → 3.1.3","issue":{"uuid":"4558441360","node_id":"PR_kwDOStLPh87hIS_a","number":4,"state":"open","title":"chore: bump flask from 3.0.3 to 3.1.3 in /ressources","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-31T17:49:17.000Z","updated_at":"2026-05-31T17:49:18.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore","packages":[{"name":"flask","old_version":"3.0.3","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":"/ressources","ecosystem":"pip"},"body":"Bumps [flask](https://github.com/pallets/flask) from 3.0.3 to 3.1.3.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.3...3.1.3\"\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=flask\u0026package-manager=pip\u0026previous-version=3.0.3\u0026new-version=3.1.3)](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/alderichoarau/tp-github-action/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/alderichoarau%2Ftp-github-action/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"}},{"old_version":"3.0.0","new_version":"3.1.3","update_type":"minor","path":"/noise_server in the pip group across 1 directory","pr_created_at":"2026-05-31T05:24:21.000Z","version_change":"3.0.0 → 3.1.3","issue":{"uuid":"4556658967","node_id":"PR_kwDOSoiKJM7hDBVz","number":2,"state":"open","title":"build(deps): bump flask from 3.0.0 to 3.1.3 in /noise_server in the pip group across 1 directory","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-31T05:24:21.000Z","updated_at":"2026-05-31T05:26:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps)","packages":[{"name":"flask","old_version":"3.0.0","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":"/noise_server in the pip group across 1 directory","ecosystem":"pip"},"body":"Bumps the pip group with 1 update in the /noise_server directory: [flask](https://github.com/pallets/flask).\n\nUpdates `flask` from 3.0.0 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.3\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/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.0...3.1.3\"\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=flask\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.3)](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\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/houseofmates/createSMR/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/houseofmates/createSMR/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/houseofmates%2FcreateSMR/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"}},{"old_version":"3.0.0","new_version":"3.1.3","update_type":"minor","path":"/python-ai-service","pr_created_at":"2026-05-31T04:33:47.000Z","version_change":"3.0.0 → 3.1.3","issue":{"uuid":"4556572184","node_id":"PR_kwDOSC-byM7hCxQs","number":303,"state":"closed","title":"chore(deps): bump flask from 3.0.0 to 3.1.3 in /python-ai-service","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-31T04:34:49.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-31T04:33:47.000Z","updated_at":"2026-05-31T04:36:36.000Z","time_to_close":62,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"flask","old_version":"3.0.0","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":"/python-ai-service","ecosystem":"pip"},"body":"Bumps [flask](https://github.com/pallets/flask) from 3.0.0 to 3.1.3.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.3\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/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.0...3.1.3\"\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=flask\u0026package-manager=pip\u0026previous-version=3.0.0\u0026new-version=3.1.3)](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/souma9830/SnapPass-AI/pull/303","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/souma9830%2FSnapPass-AI/issues/303","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/303/packages"}},{"old_version":"\u003c4.0,\u003e=3.0","new_version":"\u003e=3.1.3,\u003c4.0","update_type":"minor","path":null,"pr_created_at":"2026-05-26T04:23:43.000Z","version_change":"\u003c4.0,\u003e=3.0 → \u003e=3.1.3,\u003c4.0","issue":{"uuid":"4521342223","node_id":"PR_kwDOPcZKGs7fQ0fP","number":1093,"state":"open","title":"build(deps): Update flask requirement from \u003c4.0,\u003e=3.0 to \u003e=3.1.3,\u003c4.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-26T04:23:43.000Z","updated_at":"2026-05-26T04:23:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Update","packages":[{"name":"flask","old_version":"\u003c4.0,\u003e=3.0","new_version":"\u003e=3.1.3,\u003c4.0","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.0...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/akshithkonda1/ryuzen-ai/pull/1093","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/akshithkonda1%2Fryuzen-ai/issues/1093","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1093/packages"}},{"old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","update_type":"minor","path":null,"pr_created_at":"2026-05-25T05:22:28.000Z","version_change":"\u003e=3.0.1 → \u003e=3.1.3","issue":{"uuid":"4514476030","node_id":"PR_kwDOSUsJ5s7e6kjO","number":19,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T05:22:28.000Z","updated_at":"2026-05-25T05:24:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/Sneriko/ultralytics/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sneriko%2Fultralytics/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"}},{"old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","update_type":"minor","path":null,"pr_created_at":"2026-05-25T05:16:17.000Z","version_change":"\u003e=3.0.1 → \u003e=3.1.3","issue":{"uuid":"4514452599","node_id":"PR_kwDOSGHIPc7e6f1a","number":11,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T05:16:17.000Z","updated_at":"2026-05-25T05:16:17.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/IcyCongee/ultralytics_yolo26_rknn/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/IcyCongee%2Fultralytics_yolo26_rknn/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}},{"old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","update_type":"minor","path":null,"pr_created_at":"2026-05-25T05:12:53.000Z","version_change":"\u003e=3.0.1 → \u003e=3.1.3","issue":{"uuid":"4514439073","node_id":"PR_kwDOR217F87e6dMs","number":14,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T05:12:53.000Z","updated_at":"2026-05-25T05:13:47.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/waylans/MDAD/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/waylans%2FMDAD/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"}},{"old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","update_type":"minor","path":null,"pr_created_at":"2026-05-25T05:10:00.000Z","version_change":"\u003e=3.0.1 → \u003e=3.1.3","issue":{"uuid":"4514428055","node_id":"PR_kwDORoCGyM7e6bCm","number":11,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T05:10:00.000Z","updated_at":"2026-05-25T05:10:01.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/tomepay/Ultralytics-Attention-Hub/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomepay%2FUltralytics-Attention-Hub/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}},{"old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","update_type":"minor","path":null,"pr_created_at":"2026-05-25T05:08:09.000Z","version_change":"\u003e=3.0.1 → \u003e=3.1.3","issue":{"uuid":"4514421266","node_id":"PR_kwDORbrIm87e6Zpr","number":12,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T05:08:09.000Z","updated_at":"2026-05-25T05:08:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/WoodenDrum/yolo_zeroshot/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoodenDrum%2Fyolo_zeroshot/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","update_type":"minor","path":null,"pr_created_at":"2026-05-25T04:58:02.000Z","version_change":"\u003e=3.0.1 → \u003e=3.1.3","issue":{"uuid":"4514379750","node_id":"PR_kwDOPVzNOM7e6RJe","number":22,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-25T04:58:02.000Z","updated_at":"2026-05-25T04:59:36.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/GroundhogPaul/yolov11_prune_distill_2step/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/GroundhogPaul%2Fyolov11_prune_distill_2step/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/packages"}},{"old_version":"2.0.1","new_version":"3.1.3","update_type":"major","path":null,"pr_created_at":"2026-05-24T19:58:20.000Z","version_change":"2.0.1 → 3.1.3","issue":{"uuid":"4512747309","node_id":"PR_kwDOQGy9FM7e1OS3","number":1,"state":"open","title":"Bump the pip group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-24T19:58:20.000Z","updated_at":"2026-05-24T19:58:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":11,"packages":[{"name":"certifi","old_version":"2021.5.30","new_version":"2024.7.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"eventlet","old_version":"0.31.1","new_version":"0.41.0","repository_url":"https://github.com/eventlet/eventlet"},{"name":"flask","old_version":"2.0.1","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"gunicorn","old_version":"20.1.0","new_version":"22.0.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"idna","old_version":"3.2","new_version":"3.15","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.0.1","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"python-socketio","old_version":"5.4.0","new_version":"5.14.0","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"requests","old_version":"2.26.0","new_version":"2.33.0","repository_url":"https://github.com/psf/requests"},{"name":"urllib3","old_version":"1.26.6","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"2.0.1","new_version":"3.1.6","repository_url":"https://github.com/pallets/werkzeug"},{"name":"zipp","old_version":"3.5.0","new_version":"3.19.1","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 11 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [certifi](https://github.com/certifi/python-certifi) | `2021.5.30` | `2024.7.4` |\n| [eventlet](https://github.com/eventlet/eventlet) | `0.31.1` | `0.41.0` |\n| [flask](https://github.com/pallets/flask) | `2.0.1` | `3.1.3` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `20.1.0` | `22.0.0` |\n| [idna](https://github.com/kjd/idna) | `3.2` | `3.15` |\n| [jinja2](https://github.com/pallets/jinja) | `3.0.1` | `3.1.6` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.4.0` | `5.14.0` |\n| [requests](https://github.com/psf/requests) | `2.26.0` | `2.33.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `1.26.6` | `2.7.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `2.0.1` | `3.1.6` |\n| [zipp](https://github.com/jaraco/zipp) | `3.5.0` | `3.19.1` |\n\n\nUpdates `certifi` from 2021.5.30 to 2024.7.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/bd8153872e9c6fc98f4023df9c2deaffea2fa463\"\u003e\u003ccode\u003ebd81538\u003c/code\u003e\u003c/a\u003e 2024.07.04 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/06a2cbf21f345563dde6c28b60e29d57e9b210b3\"\u003e\u003ccode\u003e06a2cbf\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 6.0.5 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/13bba02b72bac97c432c277158bc04b4d2a6bc23\"\u003e\u003ccode\u003e13bba02\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.1.6 to 4.1.7 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e8abcd0e62b334c164b95d49fcabdc9ecbca0554\"\u003e\u003ccode\u003ee8abcd0\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.8.14 to 1.9.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/292\"\u003e#292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/124f4adf171e15cd9a91a8b6e0325ecc97be8fe1\"\u003e\u003ccode\u003e124f4ad\u003c/code\u003e\u003c/a\u003e 2024.06.02 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/291\"\u003e#291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/c2196ce5d6ee675b27755a19948480a7823e2c6a\"\u003e\u003ccode\u003ec2196ce\u003c/code\u003e\u003c/a\u003e --- (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fefdeec7588ff1c05214b85a552afcad5fdb51b2\"\u003e\u003ccode\u003efefdeec\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.1.4 to 4.1.5 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/3c5fb1560b826a7f83f1f9750173ff766492c9cf\"\u003e\u003ccode\u003e3c5fb15\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.1.6 to 4.1.7 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/4a9569a3eb58db8548536fc16c5c5c7af946a5b1\"\u003e\u003ccode\u003e4a9569a\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.1.2 to 4.1.4 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1fc808626a895a916b1e4c2b63abae6c5eafdbe3\"\u003e\u003ccode\u003e1fc8086\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 6.0.4 to 6.0.5 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2021.05.30...2024.07.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `eventlet` from 0.31.1 to 0.41.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eventlet/eventlet/blob/master/NEWS\"\u003eeventlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.41.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to 3.14 for testing (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1086\"\u003e#1086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop 3.9 support (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1085\"\u003e#1085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMore visible deprecation (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.40.4\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eRemove legacy setuptools configuration files (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1072\"\u003e#1072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd 3.14 to supported versions (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit warning on startup that eventlet is deprecated (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1065\"\u003e#1065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Python 3.14 on macOS (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWorkaround for \u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1068\"\u003e#1068\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.40.3\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e[SECURITY] Fix request smuggling vulnerability by discarding trailers (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1062\"\u003e#1062\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.40.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility issues identified with Python 3.14 on Linux (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1058\"\u003e#1058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake database removal safer with IF EXISTS (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare jobs and CI/CD for python 3.14 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.40.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e[fix] \u0026quot;Fix\u0026quot; fork() so it \u0026quot;works\u0026quot; on Python 3.13, and \u0026quot;works\u0026quot; better on older Python versions (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1047\"\u003e#1047\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eBehavior change: threads created by eventlet.green.threading.Thread and threading.Thead will be visible across both modules if monkey patching was used. Previously each module would only list threads created in that module.\u003c/li\u003e\n\u003cli\u003eBug fix: after fork(), greenlet threads are correctly listed in threading.enumerate() if monkey patching was used. You should not use fork()-without-execve().\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e[fix] Fix patching of removed URLopener class in Python 3.14 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[fix] ReferenceError except while count rlock (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[fix] Replace deprecated datetime.utcfromtimestamp (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[fix][env] Remove duplicate steps (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[fix] Replace deprecated datetime.datetime.utcnow (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.40.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e[fix] Fix ssl test when linking against openssl 3.5 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop support Python 3.8 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1021\"\u003e#1021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[doc] Various doc updates (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/981\"\u003e#981\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[env] Drop PyPy support (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1035\"\u003e#1035\u003c/a\u003e \u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e0.39.1\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/5ec4b6dcd2e5bb41c63743bd59dedbce4a9c5381\"\u003e\u003ccode\u003e5ec4b6d\u003c/code\u003e\u003c/a\u003e Update changelog for version 0.41.0 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/6de7dbbd71585e34ccbec99d220606febb286bb8\"\u003e\u003ccode\u003e6de7dbb\u003c/code\u003e\u003c/a\u003e Switch to 3.14 for testing, fix problems found along the way. (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1086\"\u003e#1086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/1ea81d9fbf12ce62a818ff9125ca14593c5506a7\"\u003e\u003ccode\u003e1ea81d9\u003c/code\u003e\u003c/a\u003e Drop 3.9 support (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1085\"\u003e#1085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/62662af7002b531bed608c7dd73d81943ff638c9\"\u003e\u003ccode\u003e62662af\u003c/code\u003e\u003c/a\u003e More visible deprecation (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/f3254a1b401714f6dfdffa5045d25a4d36c76c06\"\u003e\u003ccode\u003ef3254a1\u003c/code\u003e\u003c/a\u003e Update changelog for version 0.40.4 (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/8cb20296f3455a1836cdbcbf1d3545666ee7f867\"\u003e\u003ccode\u003e8cb2029\u003c/code\u003e\u003c/a\u003e Remove legacy setuptools configuration files (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1072\"\u003e#1072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/220f82d843c0a57c267e77f0cc437e0b43be1cca\"\u003e\u003ccode\u003e220f82d\u003c/code\u003e\u003c/a\u003e add 3.14 to supported versions (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/01a3da5f9b552c7d58eb6de829d33f522d4b04cf\"\u003e\u003ccode\u003e01a3da5\u003c/code\u003e\u003c/a\u003e Emit warning on startup that eventlet is deprecated (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1065\"\u003e#1065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/1b2b959da1257dccd23956fda43d03dc6a28ca16\"\u003e\u003ccode\u003e1b2b959\u003c/code\u003e\u003c/a\u003e Fix Python 3.14 on macOS (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eventlet/eventlet/commit/d8bf4659cd8b178949cc2b1485b337d46bae6532\"\u003e\u003ccode\u003ed8bf465\u003c/code\u003e\u003c/a\u003e Workaround for \u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1068\"\u003e#1068\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/eventlet/eventlet/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eventlet/eventlet/compare/v0.31.1...0.41.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 2.0.1 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.0.3\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/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/2.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 20.1.0 to 22.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGunicorn 22.0 has been released\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eGunicorn 22.0.0 has been released.\u003c/strong\u003e This version fix the numerous security vulnerabilities. You're invited to upgrade asap your own installation.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e22.0.0 - 2024-04-17\r\n===================\r\n\u003cul\u003e\n\u003cli\u003euse \u003ccode\u003eutime\u003c/code\u003e to notify workers liveness\u003c/li\u003e\n\u003cli\u003emigrate setup to pyproject.toml\u003c/li\u003e\n\u003cli\u003efix numerous security vulnerabilities in HTTP parser (closing some request smuggling vectors)\u003c/li\u003e\n\u003cli\u003eparsing additional requests is no longer attempted past unsupported request framing\u003c/li\u003e\n\u003cli\u003eon HTTP versions \u0026lt; 1.1 support for chunked transfer is refused (only used in exploits)\u003c/li\u003e\n\u003cli\u003erequests conflicting configured or passed SCRIPT_NAME now produce a verbose error\u003c/li\u003e\n\u003cli\u003eTrailer fields are no longer inspected for headers indicating secure scheme\u003c/li\u003e\n\u003cli\u003esupport Python 3.12\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e** Breaking changes **\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eminimum version is Python 3.7\u003c/li\u003e\n\u003cli\u003ethe limitations on valid characters in the HTTP method have been bounded to Internet Standards\u003c/li\u003e\n\u003cli\u003erequests specifying unsupported transfer coding (order) are refused by default (rare)\u003c/li\u003e\n\u003cli\u003eHTTP methods are no longer casefolded by default (IANA method registry contains none affected)\u003c/li\u003e\n\u003cli\u003eHTTP methods containing the number sign (#) are no longer accepted by default (rare)\u003c/li\u003e\n\u003cli\u003eHTTP versions \u0026lt; 1.0 or \u0026gt;= 2.0 are no longer accepted by default (rare, only HTTP/1.1 is supported)\u003c/li\u003e\n\u003cli\u003eHTTP versions consisting of multiple digits or containing a prefix/suffix are no longer accepted\u003c/li\u003e\n\u003cli\u003eHTTP header field names Gunicorn cannot safely map to variables are silently dropped, as in other software\u003c/li\u003e\n\u003cli\u003eHTTP headers with empty field name are refused by default (no legitimate use cases, used in exploits)\u003c/li\u003e\n\u003cli\u003erequests with both Transfer-Encoding and Content-Length are refused by default (such a message might indicate an attempt to perform request smuggling)\u003c/li\u003e\n\u003cli\u003eempty transfer codings are no longer permitted (reportedly seen with really old \u0026amp; broken proxies)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e** SECURITY **\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix CVE-2024-1135\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003col\u003e\n\u003cli\u003eDocumentation is available there: \u003ca href=\"https://docs.gunicorn.org/en/stable/news.html\"\u003ehttps://docs.gunicorn.org/en/stable/news.html\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePackages: \u003ca href=\"https://pypi.org/project/gunicorn/\"\u003ehttps://pypi.org/project/gunicorn/\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2\u003eGunicorn 21.2.0 has been released\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eGunicorn 21.2.0 has been released.\u003c/strong\u003e This version fix the issue introduced in the threaded worker.\u003c/p\u003e\n\u003cp\u003eChanges:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e21.2.0 - 2023-07-19\r\n===================\r\nfix thread worker: revert change considering connection as idle .\r\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/f63d59e4d73a8ee28748d2c700fb81c8780bc419\"\u003e\u003ccode\u003ef63d59e\u003c/code\u003e\u003c/a\u003e bump to 22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/4ac81e0a1037ba5b570323be7430e09caa233e38\"\u003e\u003ccode\u003e4ac81e0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3175\"\u003e#3175\u003c/a\u003e from e-kwsm/typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/401cecfaed85d79236c7a9a1f7d8946b01c466fc\"\u003e\u003ccode\u003e401cecf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3179\"\u003e#3179\u003c/a\u003e from dhdaines/exclude-eventlet-0360\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/0243ec39ef4fc1b479ff4e1659e165f0b980b571\"\u003e\u003ccode\u003e0243ec3\u003c/code\u003e\u003c/a\u003e fix(deps): exclude eventlet 0.36.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/628a0bcb61ef3a211d67dfd68ad1ba161cccb3b8\"\u003e\u003ccode\u003e628a0bc\u003c/code\u003e\u003c/a\u003e chore: fix typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/88fc4a43152039c28096c8ba3eeadb3fbaa4aff9\"\u003e\u003ccode\u003e88fc4a4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3131\"\u003e#3131\u003c/a\u003e from pajod/patch-py12-rebased\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/deae2fc4c5f93bfce59be5363055d4cd4ab1b0b6\"\u003e\u003ccode\u003edeae2fc\u003c/code\u003e\u003c/a\u003e CI: back off the agressive timeout\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/f4703824c323fe6867dce0e2f11013b8de319353\"\u003e\u003ccode\u003ef470382\u003c/code\u003e\u003c/a\u003e docs: promise 3.12 compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5e30bfa6b1a3e1f2bde7feb514d1734d28f39231\"\u003e\u003ccode\u003e5e30bfa\u003c/code\u003e\u003c/a\u003e add changelog to project.urls (updated for PEP621)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/481c3f9522edc58806a3efc5b49be4f202cc7700\"\u003e\u003ccode\u003e481c3f9\u003c/code\u003e\u003c/a\u003e remove setup.cfg - overridden by pyproject.toml\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/20.1.0...22.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.2 to 3.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.13\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.12\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.9\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for certain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no longer testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.8\"\u003ehttps://github.com/kjd/idna/compare/v3.7...v3.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.7\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where specially crafted inputs to encode() could take exceptionally long amount of time to process. [CVE-2024-3651]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Guido Vranken for reporting the issue.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.6...v3.7\"\u003ehttps://github.com/kjd/idna/compare/v3.6...v3.7\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/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.15 (2026-05-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnforce DNS-length cap on individual labels early in \u003ccode\u003echeck_label\u003c/code\u003e,\nshort-circuiting contextual-rule processing for oversized input\nwhile staying compatible with UTS 46 usage.\u003c/li\u003e\n\u003cli\u003eTidy core helpers: hoist bidi category sets to module-level\nfrozensets (avoiding per-codepoint list construction), simplify\nlength checks, and reuse the shared \u003ccode\u003e_unicode_dots_re\u003c/code\u003e from\n\u003ccode\u003eidna.core\u003c/code\u003e in the codec module.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eraise ... from err\u003c/code\u003e for proper exception chaining and\nswitch internal string formatting to f-strings.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eflit_core\u003c/code\u003e 4.x in the build backend.\u003c/li\u003e\n\u003cli\u003eExpand the ruff lint set (flake8-bugbear, flake8-simplify,\npyupgrade, perflint) and apply the surfaced fixes; pin lint CI\nto Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration for GitHub Actions.\u003c/li\u003e\n\u003cli\u003eConvert README and HISTORY from reStructuredText to Markdown.\u003c/li\u003e\n\u003cli\u003eReference CVE-2026-45409 for the 3.14 advisory in place of the\ninitial GHSA identifier.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Felix Yan, Stan Ulbrych, and metsw24-max for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.14 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\nof the CVE-2024-3651 mitigation. [CVE-2026-45409]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Stan Ulbrych for reporting the issue.\u003c/p\u003e\n\u003ch2\u003e3.13 (2026-04-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect classification error for codepoint U+A7F1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12 (2026-04-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0.0.\u003c/li\u003e\n\u003cli\u003eIssue a deprecation warning for the transitional argument.\u003c/li\u003e\n\u003cli\u003eAdded lazy-loading to provide some performance improvements.\u003c/li\u003e\n\u003cli\u003eRemoved vestiges of code related to Python 2 support, including\nsegmentation of data structures specific to Jython.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Rodrigo Nogueira for contributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.11 (2025-10-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/af30a092e158181d0b35ac66dfa813788126bdd8\"\u003e\u003ccode\u003eaf30a09\u003c/code\u003e\u003c/a\u003e Release 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/30314d4628744ca14cf2b5820564e5127a9f86f2\"\u003e\u003ccode\u003e30314d4\u003c/code\u003e\u003c/a\u003e Pre-release 3.15rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05d4b219aa9eddc47371fcbd2000f0301016f3e9\"\u003e\u003ccode\u003e05d4b21\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/237\"\u003e#237\u003c/a\u003e from kjd/convert-docs-to-markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2987fdba1962bbb2358399e0084ba062b98a0bee\"\u003e\u003ccode\u003e2987fdb\u003c/code\u003e\u003c/a\u003e Convert README and HISTORY from reStructuredText to Markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/59fa8002d514bf4a5ce7b58f67b9ec587d53fa9c\"\u003e\u003ccode\u003e59fa800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/236\"\u003e#236\u003c/a\u003e from kjd/dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/def69834ced5d4b3c50439d8b99c4c856ec19ca2\"\u003e\u003ccode\u003edef6983\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bbd8004a797185d8c56bb555cd5c88fde05e0631\"\u003e\u003ccode\u003ebbd8004\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/234\"\u003e#234\u003c/a\u003e from StanFromIreland/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/edd07c05024344a6ccb517414ccb36683aee99fc\"\u003e\u003ccode\u003eedd07c0\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.35.2 to 4.35.2 in the actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5557db030c11bdec50d62aa5f631d705d33ba123\"\u003e\u003ccode\u003e5557db0\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f11746cf4981d25123ef7830d3ee60f07de8ae3d\"\u003e\u003ccode\u003ef11746c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/235\"\u003e#235\u003c/a\u003e from StanFromIreland/patch-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.2...v3.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.0.1 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.4 security release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.4/\"\u003ehttps://pypi.org/project/Jinja2/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\"\u003ehttps://jinja.palletsprojects.com/en/3.1.x/changes/#version-3-1-4\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003exmlattr\u003c/code\u003e filter does not allow keys with \u003ccode\u003e/\u003c/code\u003e solidus, \u003ccode\u003e\u0026gt;\u003c/code\u003e greater-than sign, or \u003ccode\u003e=\u003c/code\u003e equals sign, in addition to disallowing spaces. Regardless of any validation done by Jinja, user input should never be used as keys to this filter, or must be separately validated first. GHSA-h75v-3vvj-5mfj\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is a fix release for the 3.1.x feature branch.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix for \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-h5c8-rqwp-cp95\"\u003eGHSA-h5c8-rqwp-cp95\u003c/a\u003e. You are affected if you are using \u003ccode\u003exmlattr\u003c/code\u003e and passing user input as attribute keys.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.0.1...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-socketio` from 5.4.0 to 5.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/releases\"\u003epython-socketio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 5.14.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.13.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.12.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.11.4\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.11.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.11.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.7.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.7.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 5.5.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/blob/main/CHANGES.md\"\u003epython-socketio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003epython-socketio change log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.16.2\u003c/strong\u003e - 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent unnecessary resource allocations \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1574\"\u003e#1574\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/ca140fe44d0ceb3004073645222abec182d8784b\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd zizmor to CI builds \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1570\"\u003e#1570\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/664dc27ec6f34179ed1724430eda3520627fc642\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.16.1\u003c/strong\u003e - 2026-02-06\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse configured JSON module in managers \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1549\"\u003e#1549\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/6229261ae6e8c01e675097242e333ee84587a544\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdmin UI fixes: remove duplicate tasks, report transport upgrades (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/1c2eab13a92fac9e43663eb0b5f099eb1c40ea5b\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch to Furo documentation template (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/add47d8c7abca697a2804141bbf29bfb095f7d5e\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python free-threading to CI \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1554\"\u003e#1554\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/ccdd2004a038ae4b8171a05120c5d0787332f7ee\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.16.0\u003c/strong\u003e - 2025-12-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAddress deprecation warnings (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b235699d9b06564753c570b76055997e9d62a938\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 and 3.9 from CI builds (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/d0728d2f74538762dd551fa9cd0cd1fd5aedfa37\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.15.1\u003c/strong\u003e - 2025-12-16\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore support multiple arguments via pubsub emits \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1540\"\u003e#1540\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c279f26bb8c9887c4ca99d4d81ad331c4844438c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.15.0\u003c/strong\u003e - 2025-11-22\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetry initial Redis connection \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1536\"\u003e#1534\u003c/a\u003e ([commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1\"\u003e#1\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/1e903e173a2d7b04599c4f7f9630c1abbb531fad\"\u003ehttps://github.com/miguelgrinberg/python-socketio/commit/1e903e173a2d7b04599c4f7f9630c1abbb531fad\u003c/a\u003e) [commit \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/2\"\u003e#2\u003c/a\u003e](\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5e898a9b93526e6e667767e54c60f4c84589989d\"\u003ehttps://github.com/miguelgrinberg/python-socketio/commit/5e898a9b93526e6e667767e54c60f4c84589989d\u003c/a\u003e))\u003c/li\u003e\n\u003cli\u003eCorrectly regenerate RabbitMQ binding after a connection failure \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1516\"\u003e#1516\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/c52e93b4a328d98a968bfbdec0cfd598b73ee913\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eGritty_dev\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eext_type\u003c/code\u003e in the \u003ccode\u003eMsgPackPacket\u003c/code\u003e class \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1521\"\u003e#1521\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/208925344a48485d2cd56e40eb74266c3bcb5311\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport sending \u003ccode\u003ebytesarray\u003c/code\u003es when using pub/sub managers (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/6c9b9974f72e2efdf62407ecab24ee6995448098\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typos in documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1520\"\u003e#1520\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/db3f1c2a0105c30cb833ddfca8f05fe4320468fd\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eLê Nam Khánh\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eImprovements to the logging documentation (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b423d0e38eef559b7e81acb7e32059de305f982c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.3\u003c/strong\u003e - 2025-10-29\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python's native \u003ccode\u003eConnectionRefusedError\u003c/code\u003e exception to reject a connection \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1515\"\u003e#1515\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f3b18bde3f16437b223491d4c3e440ea37105fe3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePush binary data to the aiopika client manager \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1514\"\u003e#1514\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/194e1b7f277b5f72e1de78d3f614e7b8b6c788ac\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.2\u003c/strong\u003e - 2025-10-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore binary message support in message queue setups \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1509\"\u003e#1509\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/bab4a10f48aaae11d7f832ebe5c30ad3f85d31b3\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix formatting of client connection error \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1507\"\u003e#1507\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f298c9b54d76ab09ff72935937e1b9575bc45ffd\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd 3.14 and pypy-3.11 CI tasks (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/1f4cd3b025c294f25208ec3c05b5f8df6209e403\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove documentation of the \u003ccode\u003eBaseManager.get_participants()\u003c/code\u003e method (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/33722a0d96036f005188b07b8b46a5ef091fe65f\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.1\u003c/strong\u003e - 2025-10-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestore support for \u003ccode\u003erediss://\u003c/code\u003e URLs, and add support for \u003ccode\u003evalkeys://\u003c/code\u003e as well (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/6e2d0de12bb4e4a99fdfc30bed0706ded620822c\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Redis connections using unix sockets \u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1503\"\u003e#1503\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/a8deb3a8f3ee51d75c124157efa7fc9289fd592b\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eDarren Chang\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 5.14.0\u003c/strong\u003e - 2025-09-30\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/miguelgrinberg/python-socketio/commit/400200e00625a49796b84baa44a09cd711fabe50\"\u003e\u003ccode\u003e400200e\u003c/code\u003e\u003c/a\u003e Release 5.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/53f6be094257ed81476b0e212c8cddd6d06ca39a\"\u003e\u003ccode\u003e53f6be0\u003c/code\u003e\u003c/a\u003e Replace pickle with json (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1502\"\u003e#1502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/a59c6f520059eb095ab4472e5192ce3e486875d9\"\u003e\u003ccode\u003ea59c6f5\u003c/code\u003e\u003c/a\u003e Fix: SimpleClient.call does not raise TimeoutError on timeout (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1501\"\u003e#1501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/f61e0bec3750a83de619db9b779f9d93e449eade\"\u003e\u003ccode\u003ef61e0be\u003c/code\u003e\u003c/a\u003e wait for client to end background tasks on disconnect (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1500\"\u003e#1500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/23556fb3dcb37074020494df40fb4495d47e7efe\"\u003e\u003ccode\u003e23556fb\u003c/code\u003e\u003c/a\u003e Fixed transport property of the simple clients to be a string as documented (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/e59acf146550d5c07f530a4766dfdfffda21e20c\"\u003e\u003ccode\u003ee59acf1\u003c/code\u003e\u003c/a\u003e Address failures of test suite on Mac (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1497\"\u003e#1497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/36a89226a2fb18f876dcba48125a8c51904586ec\"\u003e\u003ccode\u003e36a8922\u003c/code\u003e\u003c/a\u003e Add support for valkey in the Redis client managers (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1488\"\u003e#1488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/5dc2aea077469ad318e47b28a84845c5efb6bdcf\"\u003e\u003ccode\u003e5dc2aea\u003c/code\u003e\u003c/a\u003e keep track of which namespaces failed to connect (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1496\"\u003e#1496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/b3da354ed9eb46c0fb847c628b379ccae475a970\"\u003e\u003ccode\u003eb3da354\u003c/code\u003e\u003c/a\u003e Add message queue deployment recommendations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/python-socketio/commit/3625fe821debf33e5430bff6375ec85056a5d95f\"\u003e\u003ccode\u003e3625fe8\u003c/code\u003e\u003c/a\u003e Bump eventlet from 0.35.2 to 0.40.3 in /examples/server/wsgi (\u003ca href=\"https://redirect.github.com/miguelgrinberg/python-socketio/issues/1491\"\u003e#1491\u003c/a\u003e) #nolog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/miguelgrinberg/python-socketio/compare/v5.4.0...v5.14.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.26.0 to 2.33.0\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.33.0\u003c/h2\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that uses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report any gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts contents to a non-deterministic location to prevent malicious file replacement. This does not affect default usage of Requests, only applications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause malformed authentication to be applied to Requests on Python 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\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/M0d3v1\"\u003e\u003ccode\u003e@​M0d3v1\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6865\"\u003epsf/requests#6865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aminvakil\"\u003e\u003ccode\u003e@​aminvakil\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7220\"\u003epsf/requests#7220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/E8Price\"\u003e\u003ccode\u003e@​E8Price\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6960\"\u003epsf/requests#6960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mitre88\"\u003e\u003ccode\u003e@​mitre88\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7244\"\u003epsf/requests#7244\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magsen\"\u003e\u003ccode\u003e@​magsen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/6553\"\u003epsf/requests#6553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7227\"\u003epsf/requests#7227\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#2330-2026-03-25\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.33.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e📣 Requests is adding inline types. If you have a typed code base that\nuses Requests, please take a look at \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003e#7271\u003c/a\u003e. Give it a try, and report\nany gaps or feedback you may have in the issue. 📣\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-25645 \u003ccode\u003erequests.utils.extract_zipped_paths\u003c/code\u003e now extracts\ncontents to a non-deterministic location to prevent malicious file\nreplacement. This does not affect default usage of Requests, only\napplications calling the utility function directly.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated to a PEP 517 build system using setuptools. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7012\"\u003e#7012\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\u003eFixed an issue where an empty netrc entry could cause\nmalformed authentication to be applied to Requests on\nPython 3.11+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7205\"\u003e#7205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7196\"\u003e#7196\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious typo fixes and doc improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/bc04dfd6dad4cb02cd92f5daa81eb562d280a761\"\u003e\u003ccode\u003ebc04dfd\u003c/code\u003e\u003c/a\u003e v2.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/66d21cb07bd6255b1280291c4fafb71803cdb3b7\"\u003e\u003ccode\u003e66d21cb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/8b9bc8fc0f63be84602387913c4b689f19efd028\"\u003e\u003ccode\u003e8b9bc8f\u003c/code\u003e\u003c/a\u003e Move badges to top of README (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7293\"\u003e#7293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e331a288f369973f5de0ec8901c94cae4fa87286\"\u003e\u003ccode\u003ee331a28\u003c/code\u003e\u003c/a\u003e Remove unused extraction call (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7292\"\u003e#7292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/753fd08c5eacce0aa0df73fe47e49525c67e0a29\"\u003e\u003ccode\u003e753fd08\u003c/code\u003e\u003c/a\u003e docs: fix FAQ grammar in httplib2 example\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/774a0b837a194ee885d4fdd9ca947900cc3daf71\"\u003e\u003ccode\u003e774a0b8\u003c/code\u003e\u003c/a\u003e docs(socks): same block as other sections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/9c72a41bec8597f948c9d8caa5dc3f12273b3303\"\u003e\u003ccode\u003e9c72a41\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 4.33.0 to 4.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/ebf71906798ec82f34e07d3168f8b8aecaf8a3be\"\u003e\u003ccode\u003eebf7190\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 4.32.0 to 4.33.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0e4ae38f0c93d4f92a96c774bd52c069d12a4798\"\u003e\u003ccode\u003e0e4ae38\u003c/code\u003e\u003c/a\u003e docs: exclude Response.is_permanent_redirect from API docs (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7244\"\u003e#7244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d568f47278492e630cc990a259047c67991d007a\"\u003e\u003ccode\u003ed568f47\u003c/code\u003e\u003c/a\u003e docs: clarify Quickstart POST example (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6960\"\u003e#6960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.26.0...v2.33.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 1.26.6 to 2.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable m...\n\n_Description has been truncated_","html_url":"https://github.com/thaliamontreux/OvenSpace/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/thaliamontreux%2FOvenSpace/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"}},{"old_version":"3.1.0","new_version":"3.1.3","update_type":"patch","path":"/backend","pr_created_at":"2026-05-23T09:09:03.000Z","version_change":"3.1.0 → 3.1.3","issue":{"uuid":"4507595607","node_id":"PR_kwDOSlnBM87el4HE","number":11,"state":"open","title":"chore(deps): bump the python-minor-patch group in /backend with 12 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-23T09:09:03.000Z","updated_at":"2026-05-23T09:09:04.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":12,"packages":[{"name":"flask","old_version":"3.1.0","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"flask-jwt-extended","old_version":"4.7.1","new_version":"4.7.4","repository_url":"https://github.com/vimalloc/flask-jwt-extended"},{"name":"google-auth","old_version":"2.30.0","new_version":"2.53.0","repository_url":"https://github.com/googleapis/google-auth-library-python"},{"name":"requests","old_version":"2.32.3","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"bleach","old_version":"6.1.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"python-dotenv","old_version":"1.1.0","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.8.2","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.3.4","new_version":"2.14.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"flask-compress","old_version":"1.15","new_version":"1.24","repository_url":"https://github.com/colour-science/flask-compress"},{"name":"reportlab","old_version":"4.2.5","new_version":"4.5.1"},{"name":"google-generativeai","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/google/generative-ai-python"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the python-minor-patch group in /backend with 12 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.3` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.8` |\n| [flask-jwt-extended](https://github.com/vimalloc/flask-jwt-extended) | `4.7.1` | `4.7.4` |\n| [google-auth](https://github.com/googleapis/google-auth-library-python) | `2.30.0` | `2.53.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.34.2` |\n| [bleach](https://github.com/mozilla/bleach) | `6.1.0` | `6.3.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.0` | `1.2.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.3.4` | `2.14.1` |\n| [flask-compress](https://github.com/colour-science/flask-compress) | `1.15` | `1.24` |\n| [reportlab](https://www.reportlab.com/) | `4.2.5` | `4.5.1` |\n| [google-generativeai](https://github.com/google/generative-ai-python) | `0.8.5` | `0.8.6` |\n\nUpdates `flask` from 3.1.0 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.0...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `werkzeug` from 3.1.3 to 3.1.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/releases\"\u003ewerkzeug's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.8\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.8 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.8/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.8/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-8\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-8\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/45?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/45?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eRequest.host\u003c/code\u003e and \u003ccode\u003eget_host\u003c/code\u003e return the empty string if the header is missing or has invalid characters. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3142\"\u003e#3142\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.7\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.7 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.7/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.7/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-7\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-7\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/44?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/44?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eparse_list_header\u003c/code\u003e preserves partially quoted items, discards empty items, and returns empty for unclosed quoted values. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3128\"\u003e#3128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eWWWAuthenticate.to_header\u003c/code\u003e does not produce a trailing space when there are no parameters. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3127\"\u003e#3127\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTransfer-Encoding\u003c/code\u003e is parsed as a set. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3134\"\u003e#3134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.host\u003c/code\u003e, \u003ccode\u003eget_host\u003c/code\u003e, and \u003ccode\u003ehost_is_trusted\u003c/code\u003e validate the characters of the value. An empty value is no longer allowed. A Unix socket server address is ignored. The \u003ccode\u003etrusted_list\u003c/code\u003e argument to \u003ccode\u003ehost_is_trusted\u003c/code\u003e is optional. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3113\"\u003e#3113\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix multipart form parser handling of newline at boundary. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3088\"\u003e#3088\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.make_conditional\u003c/code\u003e sets the \u003ccode\u003eAccept-Ranges\u003c/code\u003e header even if it is not a satisfiable range request. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3108\"\u003e#3108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emerge_slashes\u003c/code\u003e merges any number of consecutive slashes. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3121\"\u003e#3121\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.6 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.6/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in multi-segment paths. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x\"\u003eGHSA-29vq-49wr-vm6x\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.5/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/43?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/43?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless of extension or surrounding spaces. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-87hc-h4r5-73f7\"\u003eGHSA-87hc-h4r5-73f7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary. This fixes the previous attempt, which caused incorrect content lengths. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3077\"\u003e#3077\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAttributeError\u003c/code\u003e when initializing \u003ccode\u003eDebuggedApplication\u003c/code\u003e with \u003ccode\u003epin_security=False\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3075\"\u003e#3075\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.4/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/42?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/42?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/blob/main/CHANGES.rst\"\u003ewerkzeug's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.8\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eRequest.host\u003c/code\u003e and \u003ccode\u003eget_host\u003c/code\u003e return the empty string if the header is\nmissing or has invalid characters. :issue:\u003ccode\u003e3142\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.7\u003c/h2\u003e\n\u003cp\u003eReleased 2026-03-23\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eparse_list_header\u003c/code\u003e preserves partially quoted items, discards empty\nitems, and returns empty for unclosed quoted values. :pr:\u003ccode\u003e3128\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eWWWAuthenticate.to_header\u003c/code\u003e does not produce a trailing space when there\nare no parameters. :issue:\u003ccode\u003e3127\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTransfer-Encoding\u003c/code\u003e is parsed as a set. :pr:\u003ccode\u003e3134\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.host\u003c/code\u003e, \u003ccode\u003eget_host\u003c/code\u003e, and \u003ccode\u003ehost_is_trusted\u003c/code\u003e validate the\ncharacters of the value. An empty value is no longer allowed. A Unix socket\nserver address is ignored. The \u003ccode\u003etrusted_list\u003c/code\u003e argument to\n\u003ccode\u003ehost_is_trusted\u003c/code\u003e is optional. :pr:\u003ccode\u003e3113\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix multipart form parser handling of newline at boundary. :issue:\u003ccode\u003e3088\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.make_conditional\u003c/code\u003e sets the \u003ccode\u003eAccept-Ranges\u003c/code\u003e header even if it\nis not a satisfiable range request. :issue:\u003ccode\u003e3108\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003emerge_slashes\u003c/code\u003e merges any number of consecutive slashes. :issue:\u003ccode\u003e3121\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in\nmulti-segment paths. :ghsa:\u003ccode\u003e29vq-49wr-vm6x\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.make_conditional\u003c/code\u003e sets the \u003ccode\u003eAccept-Ranges\u003c/code\u003e header even if it\nis not a satisfiable range request. :issue:\u003ccode\u003e3108\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2026-01-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless\nof extension or surrounding spaces. :ghsa:\u003ccode\u003e87hc-h4r5-73f7\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary.\nThis fixes the previous attempt, which caused incorrect content lengths.\n:issue:\u003ccode\u003e3065\u003c/code\u003e :issue:\u003ccode\u003e3077\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/c1a26b45fb06d5e086b4d6be820c3302f588d815\"\u003e\u003ccode\u003ec1a26b4\u003c/code\u003e\u003c/a\u003e release version 3.1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/7926f0bc3a0da01827e59c81d6da55f8f75a2eed\"\u003e\u003ccode\u003e7926f0b\u003c/code\u003e\u003c/a\u003e relax get_host strictness (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3148\"\u003e#3148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/deab88f61fa57d37d19f83ea438d4bdebb5a743c\"\u003e\u003ccode\u003edeab88f\u003c/code\u003e\u003c/a\u003e relax get_host strictness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/65eb6398231fe94f32fbc765a74980ca61fe5d2b\"\u003e\u003ccode\u003e65eb639\u003c/code\u003e\u003c/a\u003e start version 3.1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/7720b76b37b17a33e5414bddb992c92ba854f0e3\"\u003e\u003ccode\u003e7720b76\u003c/code\u003e\u003c/a\u003e release version 3.1.7 (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3135\"\u003e#3135\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/005d93bf3437226ab185d2edc6132918d3e45763\"\u003e\u003ccode\u003e005d93b\u003c/code\u003e\u003c/a\u003e release version 3.1.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/c328342ef9f7a6476b9e41565ad0a70ff10cfde6\"\u003e\u003ccode\u003ec328342\u003c/code\u003e\u003c/a\u003e merge any number of slashes (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/23142a3cb5d1b5ba8e9914980934477e0abdc30e\"\u003e\u003ccode\u003e23142a3\u003c/code\u003e\u003c/a\u003e merge any number of slashes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/b913d68db5898c8f3def3c09a653aaf95abe38e5\"\u003e\u003ccode\u003eb913d68\u003c/code\u003e\u003c/a\u003e always set accept-ranges header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/f282943ddc687e613b7ee79b4677e4961c32ae15\"\u003e\u003ccode\u003ef282943\u003c/code\u003e\u003c/a\u003e Correct 1049dd6b2a363e1ef302b4161c340fb8582f627a\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/werkzeug/compare/3.1.3...3.1.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask-jwt-extended` from 4.7.1 to 4.7.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/releases\"\u003eflask-jwt-extended's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.7.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003esetup.py: bump PyJWT floor to \u0026gt;=2.11.0 to match the actual runtime requirement by \u003ca href=\"https://github.com/potiuk\"\u003e\u003ccode\u003e@​potiuk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/577\"\u003evimalloc/flask-jwt-extended#577\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/potiuk\"\u003e\u003ccode\u003e@​potiuk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/577\"\u003evimalloc/flask-jwt-extended#577\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.3...4.7.4\"\u003ehttps://github.com/vimalloc/flask-jwt-extended/compare/4.7.3...4.7.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e4.7.3\u003c/h2\u003e\n\u003cp\u003eI'm skipping 4.7.2 because I forgot to bump the python version in code. This is the same as 4.7.2, with things setup correctly.\u003c/p\u003e\n\u003cp\u003eOops\u003c/p\u003e\n\u003ch2\u003e4.7.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: a unexpected token by \u003ca href=\"https://github.com/Dog-Egg\"\u003e\u003ccode\u003e@​Dog-Egg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/567\"\u003evimalloc/flask-jwt-extended#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate active python versions by \u003ca href=\"https://github.com/vimalloc\"\u003e\u003ccode\u003e@​vimalloc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/575\"\u003evimalloc/flask-jwt-extended#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump PyJWT to 2.12.1 by \u003ca href=\"https://github.com/oomichi-melco\"\u003e\u003ccode\u003e@​oomichi-melco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/574\"\u003evimalloc/flask-jwt-extended#574\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/Dog-Egg\"\u003e\u003ccode\u003e@​Dog-Egg\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/567\"\u003evimalloc/flask-jwt-extended#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oomichi-melco\"\u003e\u003ccode\u003e@​oomichi-melco\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/pull/574\"\u003evimalloc/flask-jwt-extended#574\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.2\"\u003ehttps://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/fdad1cd380fa39c2bbe5b8fb2db69b05d123293f\"\u003e\u003ccode\u003efdad1cd\u003c/code\u003e\u003c/a\u003e Bump to 4.7.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/a049882b80b077ed2c751d3b2eb9b3f70d925c4d\"\u003e\u003ccode\u003ea049882\u003c/code\u003e\u003c/a\u003e setup.py: bump PyJWT floor to \u0026gt;=2.11.0 to match the actual runtime requiremen...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/03b64352620661ab464db95f76f6950ff7986ad1\"\u003e\u003ccode\u003e03b6435\u003c/code\u003e\u003c/a\u003e Bump to 4.7.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/9bf8d353a87a8ec7ac144d7090dd8f9a51bcedc6\"\u003e\u003ccode\u003e9bf8d35\u003c/code\u003e\u003c/a\u003e Bump PyJWT to 2.12.1 (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/574\"\u003e#574\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/78cf9447f614365d1d0aaa9334be97a1634cfaa9\"\u003e\u003ccode\u003e78cf944\u003c/code\u003e\u003c/a\u003e Update active python versions (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/575\"\u003e#575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/commit/1910726f152016c3e48d61792983eebe11f54ac2\"\u003e\u003ccode\u003e1910726\u003c/code\u003e\u003c/a\u003e fix: a unexpected token (\u003ca href=\"https://redirect.github.com/vimalloc/flask-jwt-extended/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/vimalloc/flask-jwt-extended/compare/4.7.1...4.7.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-auth` from 2.30.0 to 2.53.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-auth-library-python/releases\"\u003egoogle-auth's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.49.0.dev0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.48.0...v2.49.0-dev0\"\u003e2.49.0-dev0\u003c/a\u003e (2026-01-26)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove deprecated rsa dependency (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e98cf69284d3620619a70b54fb0b9533caf11878\"\u003ee98cf69284d3620619a70b54fb0b9533caf11878\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003egoogle-auth 2.48.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0\"\u003e2.48.0\u003c/a\u003e (2026-01-21)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ehonor \u003ccode\u003eNO_GCE_CHECK\u003c/code\u003e environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827\"\u003e383c9827\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b\"\u003e454b441b\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2\"\u003e52558ae2\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport the mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1\"\u003e8dcf91a1\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eresolve circular imports (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1942\"\u003e#1942\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/25c1b064\"\u003e25c1b064\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUse \u003ccode\u003euser_verification=preferred\u003c/code\u003e for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a240\"\u003e3f88a240\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eremoves \u003ccode\u003econtent-header\u003c/code\u003e from AWS IMDS get request (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e\"\u003e97bfea9e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edetect correct auth when ADC env var is set but empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e10\"\u003ebfc07e10\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20c\"\u003ee431f20c\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.48.0rc0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0rc0\"\u003e2.48.0rc0\u003c/a\u003e (2026-01-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ehonor NO_GCE_CHECK environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827536d9376e8248370ce4c2b83e468d027\"\u003e383c98\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\"\u003e454b44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1b05c85fbbd0bcee78d66e498099102ab\"\u003e8dcf91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2881b1e6555f6f5c0d76365c15807ead9\"\u003e52558a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse user_verification=preferred for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a24089c4ee6822d510de0db210b54260d873\"\u003e3f88a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20cf73ccac71926a23ec454468cea92e053\"\u003ee431f2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edetect correct auth when ADC env var is set by empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\"\u003ebfc07e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremoved content-header from AWS IMDS (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\"\u003e97bfea\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/googleapis/google-auth-library-python/blob/main/CHANGELOG.md\"\u003egoogle-auth's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"https://pypi.org/project/google-auth/#history\"\u003ePyPI History\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.47.0...v2.48.0\"\u003e2.48.0\u003c/a\u003e (2026-01-22)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd cryptography as required dependency (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1929\"\u003e#1929\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/52558ae2881b1e6555f6f5c0d76365c15807ead9\"\u003e52558ae2881b1e6555f6f5c0d76365c15807ead9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport the mTLS IAM domain for Certificate based Access (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1938\"\u003e#1938\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/8dcf91a1b05c85fbbd0bcee78d66e498099102ab\"\u003e8dcf91a1b05c85fbbd0bcee78d66e498099102ab\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd configurable GCE Metadata Server retries (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1488\"\u003e#1488\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\"\u003e454b441b478ec62bbf1a6ad5bceb6c7cbbfd0c37\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ehonor \u003ccode\u003eNO_GCE_CHECK\u003c/code\u003e environment variable (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1610\"\u003e#1610\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/383c9827536d9376e8248370ce4c2b83e468d027\"\u003e383c9827536d9376e8248370ce4c2b83e468d027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eresolve circular imports (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1942\"\u003e#1942\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/25c1b064545702cbef087cfcd15fbbb6ef1af74f\"\u003e25c1b064545702cbef087cfcd15fbbb6ef1af74f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremoves \u003ccode\u003econtent-header\u003c/code\u003e from AWS IMDS get request (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1934\"\u003e#1934\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\"\u003e97bfea9e02ede953fc8ee154e0deed3a3cfc6dcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edetect correct auth when ADC env var is set but empty (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1374\"\u003e#1374\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/bfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\"\u003ebfc07e1050bd0aa86fa3b08cdf70c9b68b5fe6a2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated utcfromtimestamp (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1799\"\u003e#1799\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/e431f20cf73ccac71926a23ec454468cea92e053\"\u003ee431f20cf73ccac71926a23ec454468cea92e053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003euser_verification=preferred\u003c/code\u003e for ReAuth WebAuthn challenge (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1798\"\u003e#1798\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f88a24089c4ee6822d510de0db210b54260d873\"\u003e3f88a24089c4ee6822d510de0db210b54260d873\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.46.0...v2.47.0\"\u003e2.47.0\u003c/a\u003e (2026-01-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop \u003ccode\u003ecachetools\u003c/code\u003e dependency in favor of simple local implementation (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1590\"\u003e#1590\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/5c07e1c4f52bc77a1b16fa3b7b3c5269c242f6f4\"\u003e5c07e1c4f52bc77a1b16fa3b7b3c5269c242f6f4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.8 support (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1918\"\u003e#1918\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/60dc20014a35ec4ba71e8065b9a33ecbdbeca97a\"\u003e60dc20014a35ec4ba71e8065b9a33ecbdbeca97a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-auth-library-python/compare/v2.45.0...v2.46.0\"\u003e2.46.0\u003c/a\u003e (2026-01-05)\u003c/h2\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate urllib3 docstrings for v2 compatibility (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1903\"\u003e#1903\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/3f1aeea2d1014ea1d244a4c3470e52d74d55404b\"\u003e3f1aeea2d1014ea1d244a4c3470e52d74d55404b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRecognize workload certificate config in has_default_client_cert_source for mTLS for Agentic Identities (\u003ca href=\"https://redirect.github.com/googleapis/google-auth-library-python/issues/1907\"\u003e#1907\u003c/a\u003e) (\u003ca href=\"https://github.com/googleapis/google-auth-library-python/commit/0b9107d573123e358c347ffa067637f992af61b4\"\u003e0b9107d573123e358c347ffa067637f992af61b4\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\u003eSee full diff in \u003ca href=\"https://github.com/googleapis/google-auth-library-python/commits\"\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.3 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.3...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bleach` from 6.1.0 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mozilla/bleach/blob/main/CHANGES\"\u003ebleach's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.3.0 (October 27th, 2025)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wbr handling. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.2.0 (October 29th, 2024)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/737\"\u003e#737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove six depdenncy. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/618\"\u003e#618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known-good versions for tinycss2. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/732\"\u003e#732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix additional \u0026lt; followed by characters and EOF issues. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/5546d5dbce60d08ccb99d981778d74044d646d4e\"\u003e\u003ccode\u003e5546d5d\u003c/code\u003e\u003c/a\u003e chore: prep for 6.3.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/88df3ff23fb2a43e174b3fdfe9191ef516de868a\"\u003e\u003ccode\u003e88df3ff\u003c/code\u003e\u003c/a\u003e chore: fix readthedocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d8b2fb45b2606515c58787c223d6605c6c70868f\"\u003e\u003ccode\u003ed8b2fb4\u003c/code\u003e\u003c/a\u003e fix: fix wbr handling (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/55e48cedb20bda23940ab34753a1fb378d5d30b9\"\u003e\u003ccode\u003e55e48ce\u003c/code\u003e\u003c/a\u003e chore: add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/a4d6cddac6e338c3d6f84c755a5fcb32e9e18fba\"\u003e\u003ccode\u003ea4d6cdd\u003c/code\u003e\u003c/a\u003e chore: drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/172d92faef543a83c6760c63c32749586cdd564b\"\u003e\u003ccode\u003e172d92f\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/df88612f2e9daf8f4ee23cf0e29b712d9d9147b6\"\u003e\u003ccode\u003edf88612\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/cbcf6b18d19aeb7777699f9385013d0a04052b68\"\u003e\u003ccode\u003ecbcf6b1\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.3 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d9aa7ef592d57dda56e26ba31d06e1b279c58eca\"\u003e\u003ccode\u003ed9aa7ef\u003c/code\u003e\u003c/a\u003e Switch from dependabot reviewers to CODEOWNERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/06f0f76cc68112bda3fa101d1730d5ba914d54a1\"\u003e\u003ccode\u003e06f0f76\u003c/code\u003e\u003c/a\u003e Update setuptools, wheel, and twine for devs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mozilla/bleach/compare/v6.1.0...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.0 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.1] - 2025-06-24\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCLI: Ensure \u003ccode\u003efind_dotenv\u003c/code\u003e work reliably on python 3.13 by [\u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/563\"\u003e#563\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.8.2 to 2.13.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.8.2...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.3.4 to 2.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/de...\n\n_Description has been truncated_","html_url":"https://github.com/TanPrishDynamics/partosathi/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanPrishDynamics%2Fpartosathi/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}},{"old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","update_type":"minor","path":null,"pr_created_at":"2026-05-23T04:03:50.000Z","version_change":"\u003e=3.0.1 → \u003e=3.1.3","issue":{"uuid":"4506765164","node_id":"PR_kwDOQvx9V87ejS7x","number":21,"state":"open","title":"Update flask requirement from \u003e=3.0.1 to \u003e=3.1.3","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-23T04:03:50.000Z","updated_at":"2026-05-23T04:03:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flask","old_version":"\u003e=3.0.1","new_version":"\u003e=3.1.3","repository_url":"https://github.com/pallets/flask"}],"path":null,"ecosystem":"pip"},"body":"\u003e [!WARNING]\n\u003e Dependabot will stop supporting `python v3.9`!\n\u003e \n\u003e Please upgrade to one of the following versions: `v3.9`, `v3.10`, `v3.11`, `v3.12`, `v3.13`, or `v3.14`.\n\u003e\n\nUpdates the requirements on [flask](https://github.com/pallets/flask) 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/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.1...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/mour250027044/efficientnet-yolov9-object-dectetion-tool/pull/21","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mour250027044%2Fefficientnet-yolov9-object-dectetion-tool/issues/21","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21/packages"}},{"old_version":"3.0.3","new_version":"3.1.3","update_type":"minor","path":null,"pr_created_at":"2026-05-22T23:03:22.000Z","version_change":"3.0.3 → 3.1.3","issue":{"uuid":"4506021598","node_id":"PR_kwDOSfTkDM7ehA0f","number":7,"state":"open","title":"chore(deps): bump the pip group across 1 directory with 2 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-22T23:03:22.000Z","updated_at":"2026-05-22T23:03:25.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip","update_count":2,"packages":[{"name":"flask","old_version":"3.0.3","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"werkzeug","old_version":"3.0.3","new_version":"3.1.6","repository_url":"https://github.com/pallets/werkzeug"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 2 updates in the / directory: [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\n\nUpdates `flask` from 3.0.3 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.3...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `werkzeug` from 3.0.3 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/releases\"\u003ewerkzeug's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.6 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.6/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in multi-segment paths. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x\"\u003eGHSA-29vq-49wr-vm6x\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.5/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/43?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/43?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless of extension or surrounding spaces. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-87hc-h4r5-73f7\"\u003eGHSA-87hc-h4r5-73f7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary. This fixes the previous attempt, which caused incorrect content lengths. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3077\"\u003e#3077\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAttributeError\u003c/code\u003e when initializing \u003ccode\u003eDebuggedApplication\u003c/code\u003e with \u003ccode\u003epin_security=False\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3075\"\u003e#3075\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.4/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/42?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/42?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special device names. This prevents reading from these when using \u003ccode\u003esend_from_directory\u003c/code\u003e. \u003ccode\u003esecure_filename\u003c/code\u003e already prevented writing to these. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-hgf8-39gv-g3f2\"\u003eghsa-hgf8-39gv-g3f2\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe debugger pin fails after 10 attempts instead of 11. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3020\"\u003e#3020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3065\"\u003e#3065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CPU usage during Watchdog reloader. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3054\"\u003e#3054\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.json\u003c/code\u003e annotation is more accurate. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3067\"\u003e#3067\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTraceback rendering handles when the line number is beyond the available source lines. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3044\"\u003e#3044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eHTTPException.get_response\u003c/code\u003e annotation and doc better conveys the distinction between WSGI and sans-IO responses. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3056\"\u003e#3056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.3/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3\"\u003ehttps://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/41?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/41?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInitial data passed to \u003ccode\u003eMultiDict\u003c/code\u003e and similar interfaces only accepts \u003ccode\u003elist\u003c/code\u003e, \u003ccode\u003etuple\u003c/code\u003e, or \u003ccode\u003eset\u003c/code\u003e when passing multiple values. It had been changed to accept any \u003ccode\u003eCollection\u003c/code\u003e, but this matched types that should be treated as single values, such as \u003ccode\u003ebytes\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/2994\"\u003e#2994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen the \u003ccode\u003eHost\u003c/code\u003e header is not set and \u003ccode\u003eRequest.host\u003c/code\u003e falls back to the WSGI \u003ccode\u003eSERVER_NAME\u003c/code\u003e value, if that value is an IPv6 address it is wrapped in \u003ccode\u003e[]\u003c/code\u003e to match the \u003ccode\u003eHost\u003c/code\u003e header. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/2993\"\u003e#2993\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.2/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2\"\u003ehttps://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/blob/main/CHANGES.rst\"\u003ewerkzeug's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in\nmulti-segment paths. :ghsa:\u003ccode\u003e29vq-49wr-vm6x\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.make_conditional\u003c/code\u003e sets the \u003ccode\u003eAccept-Ranges\u003c/code\u003e header even if it\nis not a satisfiable range request. :issue:\u003ccode\u003e3108\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2026-01-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless\nof extension or surrounding spaces. :ghsa:\u003ccode\u003e87hc-h4r5-73f7\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary.\nThis fixes the previous attempt, which caused incorrect content lengths.\n:issue:\u003ccode\u003e3065\u003c/code\u003e :issue:\u003ccode\u003e3077\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAttributeError\u003c/code\u003e when initializing \u003ccode\u003eDebuggedApplication\u003c/code\u003e with\n\u003ccode\u003epin_security=False\u003c/code\u003e. :issue:\u003ccode\u003e3075\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.4\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-28\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special device names. This prevents\nreading from these when using \u003ccode\u003esend_from_directory\u003c/code\u003e. \u003ccode\u003esecure_filename\u003c/code\u003e\nalready prevented writing to these. :ghsa:\u003ccode\u003ehgf8-39gv-g3f2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe debugger pin fails after 10 attempts instead of 11. :pr:\u003ccode\u003e3020\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary.\n:issue:\u003ccode\u003e3065\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove CPU usage during Watchdog reloader. :issue:\u003ccode\u003e3054\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.json\u003c/code\u003e annotation is more accurate. :issue:\u003ccode\u003e3067\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTraceback rendering handles when the line number is beyond the available\nsource lines. :issue:\u003ccode\u003e3044\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eHTTPException.get_response\u003c/code\u003e annotation and doc better conveys the\ndistinction between WSGI and sans-IO responses. :issue:\u003ccode\u003e3056\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInitial data passed to \u003ccode\u003eMultiDict\u003c/code\u003e and similar interfaces only accepts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/04da1b5221b7a7b57e82246e4b5741d37a6b2e56\"\u003e\u003ccode\u003e04da1b5\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/f407712fdc60a09c2b3f4fe7db557703e5d9338d\"\u003e\u003ccode\u003ef407712\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/f54fe98026253e70fbbcd35a6b52fb67cfff1c03\"\u003e\u003ccode\u003ef54fe98\u003c/code\u003e\u003c/a\u003e safe_join prevents Windows special device names in multi-segment paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/d005985ef69ffe3275eda8fb6fb25e074dbe871b\"\u003e\u003ccode\u003ed005985\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/8565c2cbd6681ae8463e77d4fc0795324a7fdae7\"\u003e\u003ccode\u003e8565c2c\u003c/code\u003e\u003c/a\u003e document rule priority (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/3febc7e90072bffe04c27e6b7478dfc4f88930df\"\u003e\u003ccode\u003e3febc7e\u003c/code\u003e\u003c/a\u003e document rule priority\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/2525b827646c10ab7adb334664e6a4af1b769181\"\u003e\u003ccode\u003e2525b82\u003c/code\u003e\u003c/a\u003e remove state machine docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/4abfbd553cdeb6d4e6fa693340d52b13c884079f\"\u003e\u003ccode\u003e4abfbd5\u003c/code\u003e\u003c/a\u003e rewrite build docstring (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3097\"\u003e#3097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/161c18b2a8800ae6ef377fb3cbdb933a878fea67\"\u003e\u003ccode\u003e161c18b\u003c/code\u003e\u003c/a\u003e rewrite build docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/86e11c29e44726dae524cd9db11549b3b1ad681d\"\u003e\u003ccode\u003e86e11c2\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/werkzeug/compare/3.0.3...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/robertpelloni/planet_fitness_stepmaniax_agent/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/robertpelloni/planet_fitness_stepmaniax_agent/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertpelloni%2Fplanet_fitness_stepmaniax_agent/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"}},{"old_version":"3.1.2","new_version":"3.1.3","update_type":"patch","path":null,"pr_created_at":"2026-05-22T15:00:48.000Z","version_change":"3.1.2 → 3.1.3","issue":{"uuid":"4503602899","node_id":"PR_kwDOQGVLVM7eZMqK","number":279,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-02T20:35:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-22T15:00:48.000Z","updated_at":"2026-06-02T20:35:24.000Z","time_to_close":970474,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":18,"packages":[{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.80.0"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-provider-flagd","old_version":"0.2.3","new_version":"0.4.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-distro","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"openfeature-provider-ofrep","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-api","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-sdk","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 18 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 13 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 8 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.80.0\n\nUpdates `openfeature-hooks-opentelemetry` from 0.2.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-hooks-opentelemetry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003e0.3.1\u003c/a\u003e (2026-02-17)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e2a2127d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2025-12-16)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emigrate to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/293\"\u003e#293\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/9590554be4c8a7f77b0c0f20d6b48076c9870f52\"\u003e9590554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a2ec682a709a4721f8362cfa6a9e6037937761ee\"\u003ea2ec682\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/open-feature/python-sdk-contrib/commit/83926dea688eac265405b79c2ec00c9d08c8862e\"\u003e\u003ccode\u003e83926de\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-hooks-opentelemetry 0.3.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e\u003ccode\u003e2a2127d\u003c/code\u003e\u003c/a\u003e fix: Align TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c08b414007f6ce10dcb83249142f054b6d6043d6\"\u003e\u003ccode\u003ec08b414\u003c/code\u003e\u003c/a\u003e chore: align unleash pyproject.toml to others (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/8239b836a25663e0030b3891d0140cb365798a37\"\u003e\u003ccode\u003e8239b83\u003c/code\u003e\u003c/a\u003e feat(provider): add \u003ccode\u003eaws-ssm\u003c/code\u003e provider (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e\u003ccode\u003e61add22\u003c/code\u003e\u003c/a\u003e fix: replace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a835c77f10c82af2157ea15be0ffae7bad79b8ce\"\u003e\u003ccode\u003ea835c77\u003c/code\u003e\u003c/a\u003e chore: relax \u003ccode\u003etypes-requests\u003c/code\u003e and update \u003ccode\u003egrpcio\u003c/code\u003e version constraints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a345ef9f1ea3333e49a173553a9098f5db6746a7\"\u003e\u003ccode\u003ea345ef9\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.2.7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b9c164a2342d101e23e062a81558f02fe0a38c0b\"\u003e\u003ccode\u003eb9c164a\u003c/code\u003e\u003c/a\u003e fix(security): update dependency protobuf to v6.33.5 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2feabd5d70bef2de6661fadf3d74238991a27466\"\u003e\u003ccode\u003e2feabd5\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-unleash 0.1.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/dcb8fadfbc0263e68c381681b5b92cb5fea2dc0d\"\u003e\u003ccode\u003edcb8fad\u003c/code\u003e\u003c/a\u003e chore: add component owners\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-flagd` from 0.2.3 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-flagd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.4.0...openfeature-provider-flagd/v0.4.1\"\u003e0.4.1\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003evarious custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003ec119a77\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eflagd:\u003c/strong\u003e extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e1995534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.3.0...openfeature-provider-flagd/v0.4.0\"\u003e0.4.0\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/83c3e48595c0f44b4a3259719a5d85fde987f492\"\u003e83c3e48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintroduce list for fatal status codes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/362\"\u003e#362\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/96a88ada622fb7941a1d4d58205ff3342180fa9a\"\u003e96a88ad\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.7...openfeature-provider-flagd/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.2.7\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/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/564eb68aa513e6d8b5fb06aa5f632f427b11abe5\"\u003e\u003ccode\u003e564eb68\u003c/code\u003e\u003c/a\u003e fix(security): update dependency pytest to v9.0.3 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.3...openfeature-provider-flagd/v0.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-distro` from 0.58b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-distro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\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\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-exporter-otlp-proto-grpc` from 1.37.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.37.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/docs/changelog.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e7.2.2 — 2026-01-28\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [Linux]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003epidfd_open()\u003c/code\u003e +\n\u003ccode\u003epoll()\u003c/code\u003e (no busy loop). Requires Linux \u0026gt;= 5.3 and Python \u0026gt;= 3.9.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [macOS], [BSD]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003ekqueue()\u003c/code\u003e (no\nbusy loop).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2701\u003c/code\u003e, [macOS]: fix compilation error on macOS \u0026lt; 10.7. (patch by\n:user:\u003ccode\u003eSergey Fedorov \u0026lt;barracuda156\u0026gt;\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2707\u003c/code\u003e, [macOS]: fix potential memory leaks in error paths of\n:meth:\u003ccode\u003eProcess.memory_full_info\u003c/code\u003e and :meth:\u003ccode\u003eProcess.threads\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2708\u003c/code\u003e, [macOS]: :meth:\u003ccode\u003eProcess.cmdline\u003c/code\u003e and :meth:\u003ccode\u003eProcess.environ\u003c/code\u003e may\nfail with \u003ccode\u003eOSError: [Errno 0] Undefined error\u003c/code\u003e (from\n\u003ccode\u003esysctl(KERN_PROCARGS2)\u003c/code\u003e). They now raise :exc:\u003ccode\u003eAccessDenied\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.1 — 2025-12-29\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2699\u003c/code\u003e, [FreeBSD], [NetBSD]: :func:\u003ccode\u003eheap_info\u003c/code\u003e does not detect small\nallocations (\u0026lt;= 1K). In order to fix that, we now flush internal jemalloc\ncache before fetching the metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.0 — 2025-12-23\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e1275\u003c/code\u003e: new :func:\u003ccode\u003eheap_info\u003c/code\u003e and :func:\u003ccode\u003eheap_trim\u003c/code\u003e functions, providing\ndirect access to the platform's native C :term:\u003ccode\u003eheap\u003c/code\u003e allocator (glibc,\nmimalloc, libmalloc). Useful to create tools to detect memory leaks.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2403\u003c/code\u003e, [Linux]: publish wheels for Linux musl.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2680\u003c/code\u003e: unit tests are no longer installed / part of the distribution.\nThey now live under \u003ccode\u003etests/\u003c/code\u003e instead of \u003ccode\u003epsutil/tests\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2684\u003c/code\u003e, [FreeBSD], [critical]: compilation fails on FreeBSD 14 due to\nmissing include.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2691\u003c/code\u003e, [Windows]: fix memory leak in :func:\u003ccode\u003enet_if_stats\u003c/code\u003e due to missing\n\u003ccode\u003ePy_CLEAR\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eCompatibility notes\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9eea97dd6f1d16ea33f5144c8925f1ce7a0688e1\"\u003e\u003ccode\u003e9eea97d\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/938ac647418f09e4e610b2c755741316713c5592\"\u003e\u003ccode\u003e938ac64\u003c/code\u003e\u003c/a\u003e Rm sphinxcontrib.googleanalytics; override layout.html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9dcbb7e60e650f0ab0cb52154b0a12c70f6a1e4c\"\u003e\u003ccode\u003e9dcbb7e\u003c/code\u003e\u003c/a\u003e Add sphinxcontrib-googleanalytics to requirements.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/76eaf9ae0f2868569c14b46f4165310885a40a15\"\u003e\u003ccode\u003e76eaf9a\u003c/code\u003e\u003c/a\u003e Try to add google analytics to doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/de1cafa56f54e97ca557993155e76dd98877e136\"\u003e\u003ccode\u003ede1cafa\u003c/code\u003e\u003c/a\u003e Update doc mentioning Process.wait() internal details\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/bb30943b0336a16f28437ec549c15a8ad2830cca\"\u003e\u003ccode\u003ebb30943\u003c/code\u003e\u003c/a\u003e Refact can_use_pidfd_open() and can_use_kqueue()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/a571717d6520d436273c8cb34ca871db4bfa508a\"\u003e\u003ccode\u003ea571717\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2708\"\u003e#2708\u003c/a\u003e, macos / cmdline / environ; raise AD instead of OSError(0) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8b98c3effc20dcc4ed08c8f3d33e11ec0f5445b1\"\u003e\u003ccode\u003e8b98c3e\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/700b7e6a4171ae7c775679217205f1d97568ae00\"\u003e\u003ccode\u003e700b7e6\u003c/code\u003e\u003c/a\u003e [macOS] fix potential leaks in error paths (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/7cc7923a1479fb1d32bb25d3e78b465e2695fbf7\"\u003e\u003ccode\u003e7cc7923\u003c/code\u003e\u003c/a\u003e Windows / cmdline(): be more defensive in free()ing in case of error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/v7.0.0...v7.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 4.0.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/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\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/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.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 `flask` from 3.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.2...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-ofrep` from 0.2.0 to 0.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-ofrep's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-ofrep: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eofrep:\u003c/strong\u003e handle 401, 403, 404 and 5xx errors explicitly and add tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/346\"\u003e#346\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/7e18bc120ee1a310c28c96aac5b608941889d756\"\u003e7e18bc1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\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/open-feature/python-sdk-contrib/commit/4ef10198f1dad5887056f453340f6fb3c9dabc83\"\u003e\u003ccode\u003e4ef1019\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-ofrep 0.3.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-api` from 1.37.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.37.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-jinja2` from 0.58b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-jinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\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\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-requests` from 0.58b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-requests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/...\n\n_Description has been truncated_","html_url":"https://github.com/BramVerkuijlen/Minimal-OTel-Demo/pull/279","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/BramVerkuijlen%2FMinimal-OTel-Demo/issues/279","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/279/packages"}},{"old_version":"3.1.2","new_version":"3.1.3","update_type":"patch","path":null,"pr_created_at":"2026-05-22T07:59:43.000Z","version_change":"3.1.2 → 3.1.3","issue":{"uuid":"4500961536","node_id":"PR_kwDOQIiWRs7eQkAC","number":267,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-02T00:37:44.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-22T07:59:43.000Z","updated_at":"2026-06-02T00:37:46.000Z","time_to_close":923881,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":18,"packages":[{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.80.0"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-provider-flagd","old_version":"0.2.3","new_version":"0.4.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-distro","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"openfeature-provider-ofrep","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-api","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-sdk","old_version":"1.38.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.59b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 18 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 13 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.59b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 8 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.59b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.38.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.80.0\n\nUpdates `openfeature-hooks-opentelemetry` from 0.2.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-hooks-opentelemetry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003e0.3.1\u003c/a\u003e (2026-02-17)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e2a2127d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2025-12-16)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emigrate to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/293\"\u003e#293\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/9590554be4c8a7f77b0c0f20d6b48076c9870f52\"\u003e9590554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a2ec682a709a4721f8362cfa6a9e6037937761ee\"\u003ea2ec682\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/open-feature/python-sdk-contrib/commit/83926dea688eac265405b79c2ec00c9d08c8862e\"\u003e\u003ccode\u003e83926de\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-hooks-opentelemetry 0.3.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e\u003ccode\u003e2a2127d\u003c/code\u003e\u003c/a\u003e fix: Align TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c08b414007f6ce10dcb83249142f054b6d6043d6\"\u003e\u003ccode\u003ec08b414\u003c/code\u003e\u003c/a\u003e chore: align unleash pyproject.toml to others (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/8239b836a25663e0030b3891d0140cb365798a37\"\u003e\u003ccode\u003e8239b83\u003c/code\u003e\u003c/a\u003e feat(provider): add \u003ccode\u003eaws-ssm\u003c/code\u003e provider (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e\u003ccode\u003e61add22\u003c/code\u003e\u003c/a\u003e fix: replace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a835c77f10c82af2157ea15be0ffae7bad79b8ce\"\u003e\u003ccode\u003ea835c77\u003c/code\u003e\u003c/a\u003e chore: relax \u003ccode\u003etypes-requests\u003c/code\u003e and update \u003ccode\u003egrpcio\u003c/code\u003e version constraints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a345ef9f1ea3333e49a173553a9098f5db6746a7\"\u003e\u003ccode\u003ea345ef9\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.2.7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b9c164a2342d101e23e062a81558f02fe0a38c0b\"\u003e\u003ccode\u003eb9c164a\u003c/code\u003e\u003c/a\u003e fix(security): update dependency protobuf to v6.33.5 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2feabd5d70bef2de6661fadf3d74238991a27466\"\u003e\u003ccode\u003e2feabd5\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-unleash 0.1.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/dcb8fadfbc0263e68c381681b5b92cb5fea2dc0d\"\u003e\u003ccode\u003edcb8fad\u003c/code\u003e\u003c/a\u003e chore: add component owners\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-flagd` from 0.2.3 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-flagd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.4.0...openfeature-provider-flagd/v0.4.1\"\u003e0.4.1\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003evarious custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003ec119a77\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eflagd:\u003c/strong\u003e extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e1995534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.3.0...openfeature-provider-flagd/v0.4.0\"\u003e0.4.0\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/83c3e48595c0f44b4a3259719a5d85fde987f492\"\u003e83c3e48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintroduce list for fatal status codes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/362\"\u003e#362\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/96a88ada622fb7941a1d4d58205ff3342180fa9a\"\u003e96a88ad\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.7...openfeature-provider-flagd/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.2.7\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/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/564eb68aa513e6d8b5fb06aa5f632f427b11abe5\"\u003e\u003ccode\u003e564eb68\u003c/code\u003e\u003c/a\u003e fix(security): update dependency pytest to v9.0.3 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.3...openfeature-provider-flagd/v0.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-distro` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-distro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\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\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-exporter-otlp-proto-grpc` from 1.38.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.38.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/docs/changelog.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e7.2.2 — 2026-01-28\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [Linux]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003epidfd_open()\u003c/code\u003e +\n\u003ccode\u003epoll()\u003c/code\u003e (no busy loop). Requires Linux \u0026gt;= 5.3 and Python \u0026gt;= 3.9.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [macOS], [BSD]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003ekqueue()\u003c/code\u003e (no\nbusy loop).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2701\u003c/code\u003e, [macOS]: fix compilation error on macOS \u0026lt; 10.7. (patch by\n:user:\u003ccode\u003eSergey Fedorov \u0026lt;barracuda156\u0026gt;\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2707\u003c/code\u003e, [macOS]: fix potential memory leaks in error paths of\n:meth:\u003ccode\u003eProcess.memory_full_info\u003c/code\u003e and :meth:\u003ccode\u003eProcess.threads\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2708\u003c/code\u003e, [macOS]: :meth:\u003ccode\u003eProcess.cmdline\u003c/code\u003e and :meth:\u003ccode\u003eProcess.environ\u003c/code\u003e may\nfail with \u003ccode\u003eOSError: [Errno 0] Undefined error\u003c/code\u003e (from\n\u003ccode\u003esysctl(KERN_PROCARGS2)\u003c/code\u003e). They now raise :exc:\u003ccode\u003eAccessDenied\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.1 — 2025-12-29\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2699\u003c/code\u003e, [FreeBSD], [NetBSD]: :func:\u003ccode\u003eheap_info\u003c/code\u003e does not detect small\nallocations (\u0026lt;= 1K). In order to fix that, we now flush internal jemalloc\ncache before fetching the metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.0 — 2025-12-23\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e1275\u003c/code\u003e: new :func:\u003ccode\u003eheap_info\u003c/code\u003e and :func:\u003ccode\u003eheap_trim\u003c/code\u003e functions, providing\ndirect access to the platform's native C :term:\u003ccode\u003eheap\u003c/code\u003e allocator (glibc,\nmimalloc, libmalloc). Useful to create tools to detect memory leaks.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2403\u003c/code\u003e, [Linux]: publish wheels for Linux musl.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2680\u003c/code\u003e: unit tests are no longer installed / part of the distribution.\nThey now live under \u003ccode\u003etests/\u003c/code\u003e instead of \u003ccode\u003epsutil/tests\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2684\u003c/code\u003e, [FreeBSD], [critical]: compilation fails on FreeBSD 14 due to\nmissing include.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2691\u003c/code\u003e, [Windows]: fix memory leak in :func:\u003ccode\u003enet_if_stats\u003c/code\u003e due to missing\n\u003ccode\u003ePy_CLEAR\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eCompatibility notes\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9eea97dd6f1d16ea33f5144c8925f1ce7a0688e1\"\u003e\u003ccode\u003e9eea97d\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/938ac647418f09e4e610b2c755741316713c5592\"\u003e\u003ccode\u003e938ac64\u003c/code\u003e\u003c/a\u003e Rm sphinxcontrib.googleanalytics; override layout.html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9dcbb7e60e650f0ab0cb52154b0a12c70f6a1e4c\"\u003e\u003ccode\u003e9dcbb7e\u003c/code\u003e\u003c/a\u003e Add sphinxcontrib-googleanalytics to requirements.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/76eaf9ae0f2868569c14b46f4165310885a40a15\"\u003e\u003ccode\u003e76eaf9a\u003c/code\u003e\u003c/a\u003e Try to add google analytics to doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/de1cafa56f54e97ca557993155e76dd98877e136\"\u003e\u003ccode\u003ede1cafa\u003c/code\u003e\u003c/a\u003e Update doc mentioning Process.wait() internal details\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/bb30943b0336a16f28437ec549c15a8ad2830cca\"\u003e\u003ccode\u003ebb30943\u003c/code\u003e\u003c/a\u003e Refact can_use_pidfd_open() and can_use_kqueue()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/a571717d6520d436273c8cb34ca871db4bfa508a\"\u003e\u003ccode\u003ea571717\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2708\"\u003e#2708\u003c/a\u003e, macos / cmdline / environ; raise AD instead of OSError(0) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8b98c3effc20dcc4ed08c8f3d33e11ec0f5445b1\"\u003e\u003ccode\u003e8b98c3e\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/700b7e6a4171ae7c775679217205f1d97568ae00\"\u003e\u003ccode\u003e700b7e6\u003c/code\u003e\u003c/a\u003e [macOS] fix potential leaks in error paths (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/7cc7923a1479fb1d32bb25d3e78b465e2695fbf7\"\u003e\u003ccode\u003e7cc7923\u003c/code\u003e\u003c/a\u003e Windows / cmdline(): be more defensive in free()ing in case of error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/v7.0.0...v7.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 4.0.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/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\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/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.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 `flask` from 3.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.2...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-ofrep` from 0.2.0 to 0.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-ofrep's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-ofrep: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eofrep:\u003c/strong\u003e handle 401, 403, 404 and 5xx errors explicitly and add tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/346\"\u003e#346\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/7e18bc120ee1a310c28c96aac5b608941889d756\"\u003e7e18bc1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\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/open-feature/python-sdk-contrib/commit/4ef10198f1dad5887056f453340f6fb3c9dabc83\"\u003e\u003ccode\u003e4ef1019\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-ofrep 0.3.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-api` from 1.38.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-api's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.38.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-jinja2` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-jinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\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\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-instrumentation-requests` from 0.59b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-instrumentation-requests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/...\n\n_Description has been truncated_","html_url":"https://github.com/monoscope-tech/oteldemo/pull/267","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/monoscope-tech%2Foteldemo/issues/267","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/267/packages"}},{"old_version":"3.1.2","new_version":"3.1.3","update_type":"patch","path":null,"pr_created_at":"2026-05-22T03:48:44.000Z","version_change":"3.1.2 → 3.1.3","issue":{"uuid":"4499667855","node_id":"PR_kwDOPzk3Ms7eMbhe","number":286,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 19 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-01T06:50:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-22T03:48:44.000Z","updated_at":"2026-06-01T06:50:58.000Z","time_to_close":874932,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":19,"packages":[{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.80.0"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-provider-flagd","old_version":"0.2.3","new_version":"0.4.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-distro","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.1.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"locust-plugins","old_version":"4.7.0","new_version":"5.0.0","repository_url":"https://github.com/SvenskaSpel/locust-plugins"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-api","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-sdk","old_version":"1.37.0","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.58b0","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 19 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [locust-plugins](https://github.com/SvenskaSpel/locust-plugins) | `4.7.0` | `5.0.0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 14 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [locust-plugins](https://github.com/SvenskaSpel/locust-plugins) | `4.7.0` | `5.0.0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.58b0` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 8 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.58b0` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.37.0` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.1.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.1.0` |\n\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.80.0\n\nUpdates `openfeature-hooks-opentelemetry` from 0.2.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-hooks-opentelemetry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003e0.3.1\u003c/a\u003e (2026-02-17)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e2a2127d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2025-12-16)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emigrate to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/293\"\u003e#293\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/9590554be4c8a7f77b0c0f20d6b48076c9870f52\"\u003e9590554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate opentelemetry hook to latest version of semantic conventions (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/326\"\u003e#326\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a2ec682a709a4721f8362cfa6a9e6037937761ee\"\u003ea2ec682\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/open-feature/python-sdk-contrib/commit/83926dea688eac265405b79c2ec00c9d08c8862e\"\u003e\u003ccode\u003e83926de\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-hooks-opentelemetry 0.3.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e\u003ccode\u003e2a2127d\u003c/code\u003e\u003c/a\u003e fix: Align TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c08b414007f6ce10dcb83249142f054b6d6043d6\"\u003e\u003ccode\u003ec08b414\u003c/code\u003e\u003c/a\u003e chore: align unleash pyproject.toml to others (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/8239b836a25663e0030b3891d0140cb365798a37\"\u003e\u003ccode\u003e8239b83\u003c/code\u003e\u003c/a\u003e feat(provider): add \u003ccode\u003eaws-ssm\u003c/code\u003e provider (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e\u003ccode\u003e61add22\u003c/code\u003e\u003c/a\u003e fix: replace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a835c77f10c82af2157ea15be0ffae7bad79b8ce\"\u003e\u003ccode\u003ea835c77\u003c/code\u003e\u003c/a\u003e chore: relax \u003ccode\u003etypes-requests\u003c/code\u003e and update \u003ccode\u003egrpcio\u003c/code\u003e version constraints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a345ef9f1ea3333e49a173553a9098f5db6746a7\"\u003e\u003ccode\u003ea345ef9\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.2.7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b9c164a2342d101e23e062a81558f02fe0a38c0b\"\u003e\u003ccode\u003eb9c164a\u003c/code\u003e\u003c/a\u003e fix(security): update dependency protobuf to v6.33.5 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2feabd5d70bef2de6661fadf3d74238991a27466\"\u003e\u003ccode\u003e2feabd5\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-unleash 0.1.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/dcb8fadfbc0263e68c381681b5b92cb5fea2dc0d\"\u003e\u003ccode\u003edcb8fad\u003c/code\u003e\u003c/a\u003e chore: add component owners\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.2.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-flagd` from 0.2.3 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-flagd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.4.0...openfeature-provider-flagd/v0.4.1\"\u003e0.4.1\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003evarious custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003ec119a77\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eflagd:\u003c/strong\u003e extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e1995534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.3.0...openfeature-provider-flagd/v0.4.0\"\u003e0.4.0\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/83c3e48595c0f44b4a3259719a5d85fde987f492\"\u003e83c3e48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintroduce list for fatal status codes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/362\"\u003e#362\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/96a88ada622fb7941a1d4d58205ff3342180fa9a\"\u003e96a88ad\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.7...openfeature-provider-flagd/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.2.7\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/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/564eb68aa513e6d8b5fb06aa5f632f427b11abe5\"\u003e\u003ccode\u003e564eb68\u003c/code\u003e\u003c/a\u003e fix(security): update dependency pytest to v9.0.3 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.3...openfeature-provider-flagd/v0.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-distro` from 0.58b0 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/CHANGELOG.md\"\u003eopentelemetry-distro's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eAll notable changes to this project will be documented in this file.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThe format is based on \u003ca href=\"https://keepachangelog.com/en/1.0.0/\"\u003eKeep a Changelog\u003c/a\u003e,\nand this project adheres to \u003ca href=\"https://semver.org/spec/v2.0.0.html\"\u003eSemantic Versioning\u003c/a\u003e.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!NOTE]\nThe following components are released independently and maintain individual CHANGELOG files.\nUse \u003ca href=\"https://github.com/search?q=repo%3Aopen-telemetry%2Fopentelemetry-python-contrib+path%3A**%2FCHANGELOG.md\u0026amp;type=code\"\u003ethis search for a list of all CHANGELOG.md files in this repo\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Add support for suppressing resource\ninformation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3898\"\u003e#3898\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Add experimental metrics attributes Labeler\nutility\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4288\"\u003e#4288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-logging\u003c/code\u003e: Add \u003ccode\u003eOTEL_PYTHON_LOG_HANDLER_LEVEL\u003c/code\u003e\nand \u003ccode\u003eOTEL_PYTHON_LOG_FORMAT\u003c/code\u003e environment variables to configure the log level\nand formatter of the auto-instrumented \u003ccode\u003eLoggingHandler\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4298\"\u003e#4298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlite3\u003c/code\u003e: Add uninstrument, error status,\nsuppress, and no-op tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4335\"\u003e#4335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eBaggageLogProcessor\u003c/code\u003e to \u003ccode\u003eopentelemetry-processor-baggage\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for\n\u003ccode\u003eprocess.disk.io\u003c/code\u003e metric in system-metrics instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4397\"\u003e#4397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Register \u003ccode\u003eOTEL_SEMCONV_STABILITY_OPT_IN\u003c/code\u003e in\n\u003ccode\u003eenvironment_variables.py\u003c/code\u003e so \u003ccode\u003eopentelemetry-instrument\u003c/code\u003e exposes a\n\u003ccode\u003e--semconv_stability_opt_in\u003c/code\u003e CLI argument\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4438\"\u003e#4438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003eAGENTS.md\u003c/code\u003e with instrumentation/GenAI guidance and add PR review\ninstructions.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4457\"\u003e#4457\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\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-exporter-otlp-proto-grpc` from 1.37.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.37.0...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/docs/changelog.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e7.2.2 — 2026-01-28\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [Linux]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003epidfd_open()\u003c/code\u003e +\n\u003ccode\u003epoll()\u003c/code\u003e (no busy loop). Requires Linux \u0026gt;= 5.3 and Python \u0026gt;= 3.9.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [macOS], [BSD]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003ekqueue()\u003c/code\u003e (no\nbusy loop).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2701\u003c/code\u003e, [macOS]: fix compilation error on macOS \u0026lt; 10.7. (patch by\n:user:\u003ccode\u003eSergey Fedorov \u0026lt;barracuda156\u0026gt;\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2707\u003c/code\u003e, [macOS]: fix potential memory leaks in error paths of\n:meth:\u003ccode\u003eProcess.memory_full_info\u003c/code\u003e and :meth:\u003ccode\u003eProcess.threads\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2708\u003c/code\u003e, [macOS]: :meth:\u003ccode\u003eProcess.cmdline\u003c/code\u003e and :meth:\u003ccode\u003eProcess.environ\u003c/code\u003e may\nfail with \u003ccode\u003eOSError: [Errno 0] Undefined error\u003c/code\u003e (from\n\u003ccode\u003esysctl(KERN_PROCARGS2)\u003c/code\u003e). They now raise :exc:\u003ccode\u003eAccessDenied\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.1 — 2025-12-29\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2699\u003c/code\u003e, [FreeBSD], [NetBSD]: :func:\u003ccode\u003eheap_info\u003c/code\u003e does not detect small\nallocations (\u0026lt;= 1K). In order to fix that, we now flush internal jemalloc\ncache before fetching the metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.0 — 2025-12-23\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e1275\u003c/code\u003e: new :func:\u003ccode\u003eheap_info\u003c/code\u003e and :func:\u003ccode\u003eheap_trim\u003c/code\u003e functions, providing\ndirect access to the platform's native C :term:\u003ccode\u003eheap\u003c/code\u003e allocator (glibc,\nmimalloc, libmalloc). Useful to create tools to detect memory leaks.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2403\u003c/code\u003e, [Linux]: publish wheels for Linux musl.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2680\u003c/code\u003e: unit tests are no longer installed / part of the distribution.\nThey now live under \u003ccode\u003etests/\u003c/code\u003e instead of \u003ccode\u003epsutil/tests\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2684\u003c/code\u003e, [FreeBSD], [critical]: compilation fails on FreeBSD 14 due to\nmissing include.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2691\u003c/code\u003e, [Windows]: fix memory leak in :func:\u003ccode\u003enet_if_stats\u003c/code\u003e due to missing\n\u003ccode\u003ePy_CLEAR\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eCompatibility notes\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9eea97dd6f1d16ea33f5144c8925f1ce7a0688e1\"\u003e\u003ccode\u003e9eea97d\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/938ac647418f09e4e610b2c755741316713c5592\"\u003e\u003ccode\u003e938ac64\u003c/code\u003e\u003c/a\u003e Rm sphinxcontrib.googleanalytics; override layout.html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9dcbb7e60e650f0ab0cb52154b0a12c70f6a1e4c\"\u003e\u003ccode\u003e9dcbb7e\u003c/code\u003e\u003c/a\u003e Add sphinxcontrib-googleanalytics to requirements.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/76eaf9ae0f2868569c14b46f4165310885a40a15\"\u003e\u003ccode\u003e76eaf9a\u003c/code\u003e\u003c/a\u003e Try to add google analytics to doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/de1cafa56f54e97ca557993155e76dd98877e136\"\u003e\u003ccode\u003ede1cafa\u003c/code\u003e\u003c/a\u003e Update doc mentioning Process.wait() internal details\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/bb30943b0336a16f28437ec549c15a8ad2830cca\"\u003e\u003ccode\u003ebb30943\u003c/code\u003e\u003c/a\u003e Refact can_use_pidfd_open() and can_use_kqueue()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/a571717d6520d436273c8cb34ca871db4bfa508a\"\u003e\u003ccode\u003ea571717\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2708\"\u003e#2708\u003c/a\u003e, macos / cmdline / environ; raise AD instead of OSError(0) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8b98c3effc20dcc4ed08c8f3d33e11ec0f5445b1\"\u003e\u003ccode\u003e8b98c3e\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/700b7e6a4171ae7c775679217205f1d97568ae00\"\u003e\u003ccode\u003e700b7e6\u003c/code\u003e\u003c/a\u003e [macOS] fix potential leaks in error paths (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/7cc7923a1479fb1d32bb25d3e78b465e2695fbf7\"\u003e\u003ccode\u003e7cc7923\u003c/code\u003e\u003c/a\u003e Windows / cmdline(): be more defensive in free()ing in case of error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/v7.0.0...v7.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.1.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.1] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMove more config to \u003ccode\u003epyproject.toml\u003c/code\u003e, removed \u003ccode\u003esetup.cfg\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for reading \u003ccode\u003e.env\u003c/code\u003e from FIFOs (Unix) by [\u003ca href=\"https://github.com/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.2.0] - 2025-10-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade build system to use PEP 517 \u0026amp; PEP 518 to use \u003ccode\u003ebuild\u003c/code\u003e and \u003ccode\u003epyproject.toml\u003c/code\u003e by [\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/583\"\u003e#583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by [\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/579\"\u003e#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for disabling of \u003ccode\u003eload_dotenv()\u003c/code\u003e using \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e env var. by [\u003ca href=\"https://github.com/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/569\"\u003e#569\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 3.3.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/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.0.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0.rc1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0.rc1\"\u003e4.0.0.rc1\u003c/a\u003e - 2025-09-07\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.3...v4.0.0\"\u003e4.0.0\u003c/a\u003e - 2025-10-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eDictConfigurator\u003c/code\u003e prefixes for \u003ccode\u003erename_fields\u003c/code\u003e and \u003ccode\u003estatic_fields\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/pull/45\"\u003e#45\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAllows using values like \u003ccode\u003eext://sys.stderr\u003c/code\u003e in \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e value fields.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupport comma seperated lists for Formatter \u003ccode\u003efmt\u003c/code\u003e (\u003ccode\u003estyle=\u0026quot;,\u0026quot;\u003c/code\u003e) e.g. \u003ccode\u003e\u0026quot;asctime,message,levelname\u0026quot;\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/15\"\u003e#15\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eNote that this style is specific to \u003ccode\u003epython-json-logger\u003c/code\u003e and thus care should be taken not to pass this format to other logging Formatter implementations.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSupports sequences of strings (e.g. lists and tuples) of field names for Formatter \u003ccode\u003efmt\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003epythonjsonlogger.core.LogRecord\u003c/code\u003e and \u003ccode\u003elog_record\u003c/code\u003e arguments to avoid confusion / overlapping with \u003ccode\u003elogging.LogRecord\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/38\"\u003e#38\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects arguments to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e (and any child classes).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eserialize_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eadd_fields\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ejsonify_log_record\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eprocess_log_record\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eNote: functions referring to \u003ccode\u003elog_record\u003c/code\u003e have \u003cstrong\u003enot\u003c/strong\u003e had their function name changed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for providing strings instead of objects when instantiating formatters. Instead use the \u003ccode\u003eDictConfigurator\u003c/code\u003e \u003ccode\u003eext://\u003c/code\u003e prefix format when using \u003ccode\u003efileConfig\u003c/code\u003e/\u003ccode\u003edictConfig\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/47\"\u003e#47\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.json.JsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e, \u003ccode\u003ejson_encoder\u003c/code\u003e, \u003ccode\u003ejson_serializer\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.orjson.OrjsonFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAffects \u003ccode\u003epythonjsonlogger.msgspec.MsgspecFormatter\u003c/code\u003e: \u003ccode\u003ejson_default\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/rubensa\"\u003e\u003ccode\u003e@​rubensa\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.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 `flask` from 3.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.1.2...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `locust-plugins` from 4.7.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/releases\"\u003elocust-plugins's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cp\u003eNo real new features, but the removals are a breaking change, hence the major version bump.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove MqttUser as it is now part of locust core by \u003ca href=\"https://github.com/ionutab\"\u003e\u003ccode\u003e@​ionutab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SvenskaSpel/locust-plugins/pull/224\"\u003eSvenskaSpel/locust-plugins#224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove SocketIOUser now that it is part of locust core, update HttpSession usage to match locust 2.40.0 by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SvenskaSpel/locust-plugins/pull/225\"\u003eSvenskaSpel/locust-plugins#225\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove import error catcher for legacy imports from locust plugins.users by \u003ca href=\"https://github.com/cyberw\"\u003e\u003ccode\u003e@​cyberw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SvenskaSpel/locust-plugins/pull/227\"\u003eSvenskaSpel/locust-plugins#227\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/compare/4.7.0...5.0.0\"\u003ehttps://github.com/SvenskaSpel/locust-plugins/compare/4.7.0...5.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/d60bb991b87663b25dd71ac6fe125019fcbfa325\"\u003e\u003ccode\u003ed60bb99\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SvenskaSpel/locust-plugins/issues/227\"\u003e#227\u003c/a\u003e from SvenskaSpel/remove-import-error-catcher-for-impo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/401308cdcd0bf52d32d63f92d82330117558a064\"\u003e\u003ccode\u003e401308c\u003c/code\u003e\u003c/a\u003e remove no_extras test in one more place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/97fbb45480d4842e02b1f3b1deea174570a639ef\"\u003e\u003ccode\u003e97fbb45\u003c/code\u003e\u003c/a\u003e fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/712d739d08be99964f9bc4875561547c052d5e9d\"\u003e\u003ccode\u003e712d739\u003c/code\u003e\u003c/a\u003e GH actions: use distributor_ex.py instead of rest_ex.py. Remove \u0026quot;no extras\u0026quot; t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/980c93b5601f8e593278087f91ec2e84e750e8ca\"\u003e\u003ccode\u003e980c93b\u003c/code\u003e\u003c/a\u003e Remove legacy import error catcher for imports from locust_plugins.users\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/937f0acf44a46096aefa6dcc75c406519b8a52fc\"\u003e\u003ccode\u003e937f0ac\u003c/code\u003e\u003c/a\u003e Remove RestUser placeholder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/77d9c53f0cd9fdb52df754b4c791514e85914749\"\u003e\u003ccode\u003e77d9c53\u003c/code\u003e\u003c/a\u003e docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/6bf6522d15ccabb9e61ce49c617d211d64128c91\"\u003e\u003ccode\u003e6bf6522\u003c/code\u003e\u003c/a\u003e update readme to mention Users that have been added to core instead\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/0c0382d553f8a52083f3f0af1c48b82b8b487fc0\"\u003e\u003ccode\u003e0c0382d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/SvenskaSpel/locust-plugins/issues/225\"\u003e#225\u003c/a\u003e from SvenskaSpel/update-httpsession-usage-to-match-lo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/commit/b1f543242057f0b42ee7b24ae89011159548ead5\"\u003e\u003ccode\u003eb1f5432\u003c/code\u003e\u003c/a\u003e better error message for test_missing_extras\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SvenskaSpel/locust-plugins/compare/4.7.0...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-ofrep` from 0.1.1 to 0.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-ofrep's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-ofrep: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.2.0...openfeature-provider-ofrep/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eofrep:\u003c/strong\u003e handle 401, 403, 404 and 5xx errors explicitly and add tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/346\"\u003e#346\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/7e18bc120ee1a310c28c96aac5b608941889d756\"\u003e7e18bc1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-ofrep: v0.2.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.1.1...openfeature-provider-ofrep/v0.2.0\"\u003e0.2.0\u003c/a\u003e (2025-09-25)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/187\"\u003e#187\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.8 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/187\"\u003e#187\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b55cc1e0f823d05a330c12af6861dbd3bec69c3a\"\u003eb55cc1e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereturn default dict if not meta provided (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/304\"\u003e#304\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/05c99eb9948902a6860af848327633d39f1c5293\"\u003e05c99eb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emigrate to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/293\"\u003e#293\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/9590554be4c8a7f77b0c0f20d6b48076c9870f52\"\u003e9590554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate python-sdk (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/289\"\u003e#289\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/f2028f5f81824310a842507a3127a3bb9bc8a984\"\u003ef2028f5\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/open-feature/python-sdk-contrib/commit/4ef10198f1dad5887056f453340f6fb3c9dabc83\"\u003e\u003ccode\u003e4ef1019\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-ofrep 0.3.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-ofrep/v0.1.1...openfeature-provider-ofrep/v0.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-api` from 1.37.0 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca hr...\n\n_Description has been truncated_","html_url":"https://github.com/AcheampongStephen/OpenTelemetry/pull/286","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/AcheampongStephen%2FOpenTelemetry/issues/286","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/286/packages"}},{"old_version":"3.1.2","new_version":"3.1.3","update_type":"patch","path":null,"pr_created_at":"2026-05-21T20:52:57.000Z","version_change":"3.1.2 → 3.1.3","issue":{"uuid":"4497837028","node_id":"PR_kwDORX-XEs7eGjAu","number":208,"state":"closed","title":"Bump the pip-production-dependencies group across 5 directories with 21 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-22T20:32:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-21T20:52:57.000Z","updated_at":"2026-05-22T20:32:59.000Z","time_to_close":85200,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":21,"packages":[{"name":"grpcio-health-checking","old_version":"1.78.0","new_version":"1.80.0"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.3.0","new_version":"0.3.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-provider-flagd","old_version":"0.2.3","new_version":"0.4.1","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-distro","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.39.1","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.2","repository_url":"https://github.com/giampaolo/psutil"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"4.0.0","new_version":"4.1.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"openai","old_version":"2.17.0","new_version":"2.37.0","repository_url":"https://github.com/openai/openai-python"},{"name":"simplejson","old_version":"3.20.2","new_version":"4.1.1","repository_url":"https://github.com/simplejson/simplejson"},{"name":"flask","old_version":"3.1.2","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"openfeature-provider-ofrep","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"opentelemetry-api","old_version":"1.39.1","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-sdk","old_version":"1.39.1","new_version":"1.42.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.60b1","new_version":"0.63b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 21 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.3.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [openai](https://github.com/openai/openai-python) | `2.17.0` | `2.37.0` |\n| [simplejson](https://github.com/simplejson/simplejson) | `3.20.2` | `4.1.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 4 updates in the /src/llm directory: [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib), [python-dotenv](https://github.com/theskumar/python-dotenv), [python-json-logger](https://github.com/nhairs/python-json-logger) and [flask](https://github.com/pallets/flask).\nBumps the pip-production-dependencies group with 13 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.3.0` | `0.3.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [flask](https://github.com/pallets/flask) | `3.1.2` | `3.1.3` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.60b1` | `0.63b1` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n\nBumps the pip-production-dependencies group with 11 updates in the /src/product-reviews directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.3.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [openai](https://github.com/openai/openai-python) | `2.17.0` | `2.37.0` |\n| [simplejson](https://github.com/simplejson/simplejson) | `3.20.2` | `4.1.1` |\n\nBumps the pip-production-dependencies group with 8 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.3.0` | `0.3.1` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.3` | `0.4.1` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.60b1` | `0.63b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.39.1` | `1.42.1` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.0.0` | `4.1.0` |\n\n\nUpdates `grpcio-health-checking` from 1.78.0 to 1.80.0\n\nUpdates `openfeature-hooks-opentelemetry` from 0.3.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-hooks-opentelemetry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-hooks-opentelemetry: v0.3.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003e0.3.1\u003c/a\u003e (2026-02-17)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlign TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e2a2127d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\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/open-feature/python-sdk-contrib/commit/83926dea688eac265405b79c2ec00c9d08c8862e\"\u003e\u003ccode\u003e83926de\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-hooks-opentelemetry 0.3.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/337\"\u003e#337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2a2127d958ea0bafabb673335fd0d9665c8d9291\"\u003e\u003ccode\u003e2a2127d\u003c/code\u003e\u003c/a\u003e fix: Align TracingHook with spec (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c08b414007f6ce10dcb83249142f054b6d6043d6\"\u003e\u003ccode\u003ec08b414\u003c/code\u003e\u003c/a\u003e chore: align unleash pyproject.toml to others (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/8239b836a25663e0030b3891d0140cb365798a37\"\u003e\u003ccode\u003e8239b83\u003c/code\u003e\u003c/a\u003e feat(provider): add \u003ccode\u003eaws-ssm\u003c/code\u003e provider (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/331\"\u003e#331\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e\u003ccode\u003e61add22\u003c/code\u003e\u003c/a\u003e fix: replace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a835c77f10c82af2157ea15be0ffae7bad79b8ce\"\u003e\u003ccode\u003ea835c77\u003c/code\u003e\u003c/a\u003e chore: relax \u003ccode\u003etypes-requests\u003c/code\u003e and update \u003ccode\u003egrpcio\u003c/code\u003e version constraints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/334\"\u003e#334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/a345ef9f1ea3333e49a173553a9098f5db6746a7\"\u003e\u003ccode\u003ea345ef9\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.2.7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/b9c164a2342d101e23e062a81558f02fe0a38c0b\"\u003e\u003ccode\u003eb9c164a\u003c/code\u003e\u003c/a\u003e fix(security): update dependency protobuf to v6.33.5 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/2feabd5d70bef2de6661fadf3d74238991a27466\"\u003e\u003ccode\u003e2feabd5\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-unleash 0.1.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/dcb8fadfbc0263e68c381681b5b92cb5fea2dc0d\"\u003e\u003ccode\u003edcb8fad\u003c/code\u003e\u003c/a\u003e chore: add component owners\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-hooks-opentelemetry/v0.3.0...openfeature-hooks-opentelemetry/v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-provider-flagd` from 0.2.3 to 0.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/releases\"\u003eopenfeature-provider-flagd's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.4.0...openfeature-provider-flagd/v0.4.1\"\u003e0.4.1\u003c/a\u003e (2026-04-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003evarious custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003ec119a77\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eflagd:\u003c/strong\u003e extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e1995534\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.4.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.3.0...openfeature-provider-flagd/v0.4.0\"\u003e0.4.0\u003c/a\u003e (2026-04-01)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003echore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/364\"\u003e#364\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/0ecd1d4c41e96f90b019a76ce9c3b1f70f2a23a4\"\u003e0ecd1d4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efractional bucketing improvements (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/373\"\u003e#373\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/83c3e48595c0f44b4a3259719a5d85fde987f492\"\u003e83c3e48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eintroduce list for fatal status codes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/362\"\u003e#362\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/96a88ada622fb7941a1d4d58205ff3342180fa9a\"\u003e96a88ad\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.3.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.7...openfeature-provider-flagd/v0.3.0\"\u003e0.3.0\u003c/a\u003e (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003e⚠ BREAKING CHANGES\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ereplace project.scripts with poethepoet (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/335\"\u003e#335\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/61add22b975140ccd39b618bf70efeeecbdc25c3\"\u003e61add22\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003egraceful fallback to code default when no default variant (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/347\"\u003e#347\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36db67de59732463a372c056525d6453d8a51a75\"\u003e36db67d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eopenfeature-provider-flagd: v0.2.7\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/open-feature/python-sdk-contrib/commit/5857f4503c4891034bb63256c1e2a20333ba3da1\"\u003e\u003ccode\u003e5857f45\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-provider-flagd 0.4.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/384\"\u003e#384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/3197e020e0d3ebde666b379699be5d3853c98090\"\u003e\u003ccode\u003e3197e02\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-api 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/4f95c87fb9fd08424089793929697b88eee0c0e6\"\u003e\u003ccode\u003e4f95c87\u003c/code\u003e\u003c/a\u003e chore(main): release openfeature-flagd-core 1.0.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/385\"\u003e#385\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/36c52d03aeddf5aa922f74ca7ef5c0ec9f6b790d\"\u003e\u003ccode\u003e36c52d0\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency asserts to \u0026gt;=0.14.0,\u0026lt;0.15.0 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c119a774736dd4d48a4dc82d158aafc17cc3936f\"\u003e\u003ccode\u003ec119a77\u003c/code\u003e\u003c/a\u003e fix: various custom operator conformance fixes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/386\"\u003e#386\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/c8c9ebe7b2cd51e8c0ce065fdb4e024aecfd3ff3\"\u003e\u003ccode\u003ec8c9ebe\u003c/code\u003e\u003c/a\u003e chore(deps): lock file maintenance (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6d3c5f8adafe7150c9bab519ed6c866ff5f85478\"\u003e\u003ccode\u003e6d3c5f8\u003c/code\u003e\u003c/a\u003e chore: stabilize transitive flagd deps (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/387\"\u003e#387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/6b7c78e1f08ad862059bd31d6aef18f66224a755\"\u003e\u003ccode\u003e6b7c78e\u003c/code\u003e\u003c/a\u003e fix(security): update vulnerability-updates [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/1995534c2545b8c65d2944e3e52ce19a552b4815\"\u003e\u003ccode\u003e1995534\u003c/code\u003e\u003c/a\u003e feat(flagd): extract evaluator into api, core, and testkit packages (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk-contrib/commit/564eb68aa513e6d8b5fb06aa5f632f427b11abe5\"\u003e\u003ccode\u003e564eb68\u003c/code\u003e\u003c/a\u003e fix(security): update dependency pytest to v9.0.3 [security] (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk-contrib/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk-contrib/compare/openfeature-provider-flagd/v0.2.3...openfeature-provider-flagd/v0.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-distro` from 0.60b1 to 0.63b1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python-contrib/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `opentelemetry-exporter-otlp-proto-grpc` from 1.39.1 to 1.42.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/v1.42.1/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.42.1/0.63b1 (2026-05-21)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve the random trace ID flag when creating child spans instead of always\nsetting the random trace id bit depending on the available trace id\ngenerator.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5241\"\u003e#5241\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.42.0/0.63b0 (2026-05-19)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e, \u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add support for 'random-trace-id'\nflags in W3C traceparent header trace flags. Implementations of \u003ccode\u003eIdGenerator\u003c/code\u003e\nthat do randomly generate the 56 least significant bits, should also\nimplement a \u003ccode\u003eis_trace_id_random\u003c/code\u003e methods that returns \u003ccode\u003eTrue\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4854\"\u003e#4854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add exception support to Logger emit and LogRecord attributes\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4908\"\u003e#4908\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e: make retryable gRPC error codes\nconfigurable for gRPC exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4917\"\u003e#4917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003ecreate_logger_provider\u003c/code\u003e/\u003ccode\u003econfigure_logger_provider\u003c/code\u003e\nto declarative file configuration, enabling LoggerProvider instantiation from\nconfig files without reading env vars\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4990\"\u003e#4990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-otlp-json-common\u003c/code\u003e: add\n'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: Add \u003ccode\u003eservice\u003c/code\u003e resource detector support to declarative\nfile configuration via \u003ccode\u003edetection_development.detectors[].service\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-docker-tests\u003c/code\u003e: add docker-tests coverage of\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e and\n\u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e metrics export\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5030\"\u003e#5030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eregistry\u003c/code\u003e keyword argument to \u003ccode\u003ePrometheusMetricReader\u003c/code\u003e to allow passing\na custom Prometheus registry\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5055\"\u003e#5055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WeaverLiveCheck test util\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5088\"\u003e#5088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add \u003ccode\u003eload_entry_point\u003c/code\u003e shared utility to declarative\nfile configuration for loading plugins via entry points; refactor propagator\nloading to use it\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5093\"\u003e#5093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-sdk\u003c/code\u003e: add sampler plugin loading to declarative file\nconfiguration via the \u003ccode\u003eopentelemetry_sampler\u003c/code\u003e entry point group, matching the\nspec's PluginComponentProvider mechanism\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/5095\"\u003e#5095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/367e14d01104785ac28b1c66ac32b2082f864a12\"\u003e\u003ccode\u003e367e14d\u003c/code\u003e\u003c/a\u003e Prepare release 1.42.1/0.63b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5243\"\u003e#5243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/fd8e50410b1788d34b36173dea58d8e38dcc80bc\"\u003e\u003ccode\u003efd8e504\u003c/code\u003e\u003c/a\u003e Preserve random trace ID flag for child spans (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5241\"\u003e#5241\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5242\"\u003e#5242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/013045e3787654123b08530059759842312325ab\"\u003e\u003ccode\u003e013045e\u003c/code\u003e\u003c/a\u003e [release/v1.42.x-0.63bx] Prepare release 1.42.0/0.63b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5225\"\u003e#5225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1731583b4e7bc6ec6a33345aa19706fc83acc8d5\"\u003e\u003ccode\u003e1731583\u003c/code\u003e\u003c/a\u003e ci: Enable GitHub Merge Queue support (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5209\"\u003e#5209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/7fab34d4f49c1cd67df07fa53471c0ae6c269008\"\u003e\u003ccode\u003e7fab34d\u003c/code\u003e\u003c/a\u003e fix(config): allow deflate for OTLP HTTP exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5075\"\u003e#5075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/0b690d2139f68dd42d2425c920aec882698443fa\"\u003e\u003ccode\u003e0b690d2\u003c/code\u003e\u003c/a\u003e ci: validate changelog fragment filenames (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5212\"\u003e#5212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/d4fabb4d6d79812a6d38dd900212f6a0fdb1866b\"\u003e\u003ccode\u003ed4fabb4\u003c/code\u003e\u003c/a\u003e feat(config): exporter plugin loading via entry points for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e19d34600b177b97cf1d8320a77ff75133515012\"\u003e\u003ccode\u003ee19d346\u003c/code\u003e\u003c/a\u003e feat(config): generic resource detector plugin loading for declarative config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1d69bd2eaa02715ecf3877a8f391678be58f2f57\"\u003e\u003ccode\u003e1d69bd2\u003c/code\u003e\u003c/a\u003e sdk/metrics: copy attributes dict to prevent post-recording mutation (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/5106\"\u003e#5106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/990a6112a124e53cc0e3f66871ce8f8d00955d15\"\u003e\u003ccode\u003e990a611\u003c/code\u003e\u003c/a\u003e feat(config): propagator plugin loading via entry points for declarative conf...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.39.1...v1.42.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 7.0.0 to 7.2.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/docs/changelog.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e7.2.2 — 2026-01-28\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [Linux]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003epidfd_open()\u003c/code\u003e +\n\u003ccode\u003epoll()\u003c/code\u003e (no busy loop). Requires Linux \u0026gt;= 5.3 and Python \u0026gt;= 3.9.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2705\u003c/code\u003e: [macOS], [BSD]: :meth:\u003ccode\u003eProcess.wait\u003c/code\u003e now uses \u003ccode\u003ekqueue()\u003c/code\u003e (no\nbusy loop).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2701\u003c/code\u003e, [macOS]: fix compilation error on macOS \u0026lt; 10.7. (patch by\n:user:\u003ccode\u003eSergey Fedorov \u0026lt;barracuda156\u0026gt;\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2707\u003c/code\u003e, [macOS]: fix potential memory leaks in error paths of\n:meth:\u003ccode\u003eProcess.memory_full_info\u003c/code\u003e and :meth:\u003ccode\u003eProcess.threads\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2708\u003c/code\u003e, [macOS]: :meth:\u003ccode\u003eProcess.cmdline\u003c/code\u003e and :meth:\u003ccode\u003eProcess.environ\u003c/code\u003e may\nfail with \u003ccode\u003eOSError: [Errno 0] Undefined error\u003c/code\u003e (from\n\u003ccode\u003esysctl(KERN_PROCARGS2)\u003c/code\u003e). They now raise :exc:\u003ccode\u003eAccessDenied\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.1 — 2025-12-29\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2699\u003c/code\u003e, [FreeBSD], [NetBSD]: :func:\u003ccode\u003eheap_info\u003c/code\u003e does not detect small\nallocations (\u0026lt;= 1K). In order to fix that, we now flush internal jemalloc\ncache before fetching the metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e7.2.0 — 2025-12-23\n^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e1275\u003c/code\u003e: new :func:\u003ccode\u003eheap_info\u003c/code\u003e and :func:\u003ccode\u003eheap_trim\u003c/code\u003e functions, providing\ndirect access to the platform's native C :term:\u003ccode\u003eheap\u003c/code\u003e allocator (glibc,\nmimalloc, libmalloc). Useful to create tools to detect memory leaks.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2403\u003c/code\u003e, [Linux]: publish wheels for Linux musl.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2680\u003c/code\u003e: unit tests are no longer installed / part of the distribution.\nThey now live under \u003ccode\u003etests/\u003c/code\u003e instead of \u003ccode\u003epsutil/tests\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2684\u003c/code\u003e, [FreeBSD], [critical]: compilation fails on FreeBSD 14 due to\nmissing include.\u003c/li\u003e\n\u003cli\u003e:gh:\u003ccode\u003e2691\u003c/code\u003e, [Windows]: fix memory leak in :func:\u003ccode\u003enet_if_stats\u003c/code\u003e due to missing\n\u003ccode\u003ePy_CLEAR\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eCompatibility notes\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9eea97dd6f1d16ea33f5144c8925f1ce7a0688e1\"\u003e\u003ccode\u003e9eea97d\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/938ac647418f09e4e610b2c755741316713c5592\"\u003e\u003ccode\u003e938ac64\u003c/code\u003e\u003c/a\u003e Rm sphinxcontrib.googleanalytics; override layout.html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/9dcbb7e60e650f0ab0cb52154b0a12c70f6a1e4c\"\u003e\u003ccode\u003e9dcbb7e\u003c/code\u003e\u003c/a\u003e Add sphinxcontrib-googleanalytics to requirements.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/76eaf9ae0f2868569c14b46f4165310885a40a15\"\u003e\u003ccode\u003e76eaf9a\u003c/code\u003e\u003c/a\u003e Try to add google analytics to doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/de1cafa56f54e97ca557993155e76dd98877e136\"\u003e\u003ccode\u003ede1cafa\u003c/code\u003e\u003c/a\u003e Update doc mentioning Process.wait() internal details\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/bb30943b0336a16f28437ec549c15a8ad2830cca\"\u003e\u003ccode\u003ebb30943\u003c/code\u003e\u003c/a\u003e Refact can_use_pidfd_open() and can_use_kqueue()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/a571717d6520d436273c8cb34ca871db4bfa508a\"\u003e\u003ccode\u003ea571717\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2708\"\u003e#2708\u003c/a\u003e, macos / cmdline / environ; raise AD instead of OSError(0) (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2709\"\u003e#2709\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/8b98c3effc20dcc4ed08c8f3d33e11ec0f5445b1\"\u003e\u003ccode\u003e8b98c3e\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/700b7e6a4171ae7c775679217205f1d97568ae00\"\u003e\u003ccode\u003e700b7e6\u003c/code\u003e\u003c/a\u003e [macOS] fix potential leaks in error paths (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/7cc7923a1479fb1d32bb25d3e78b465e2695fbf7\"\u003e\u003ccode\u003e7cc7923\u003c/code\u003e\u003c/a\u003e Windows / cmdline(): be more defensive in free()ing in case of error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/v7.0.0...v7.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-json-logger` from 4.0.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/nhairs/python-json-logger/releases\"\u003epython-json-logger's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.1.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\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/nhairs/python-json-logger/blob/main/docs/changelog.md\"\u003epython-json-logger's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.0...v4.1.0\"\u003e4.1.0\u003c/a\u003e - 2026-03-29\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14, PyPy 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for Python 3.8, 3.9 (includes PyPy versions).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/d80c68da770154d9662975b789cabcc9a3e99408\"\u003e\u003ccode\u003ed80c68d\u003c/code\u003e\u003c/a\u003e Release v4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b589b2a576ac058dc55be934159b67060a288756\"\u003e\u003ccode\u003eb589b2a\u003c/code\u003e\u003c/a\u003e [pyproject] Update license table to PEP 639 format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/2bb784a92250c60035a7e4536d1ef48cd02e50d5\"\u003e\u003ccode\u003e2bb784a\u003c/code\u003e\u003c/a\u003e Update code unlocked by Python 3.10 minimum version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/79599b5a6ad5e38c18c468fd0e4ac790961d6b5f\"\u003e\u003ccode\u003e79599b5\u003c/code\u003e\u003c/a\u003e Drop python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/622650c1f543e7909e8711e4a30c96cc2aa6e332\"\u003e\u003ccode\u003e622650c\u003c/code\u003e\u003c/a\u003e [docs.contributing] Update unsupported JSON encoders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/06165bb03f9892fc24762acabf6b1b0b35c6b56b\"\u003e\u003ccode\u003e06165bb\u003c/code\u003e\u003c/a\u003e [tests.test_formatters] Add non-printable bytes to test_common_types_encoded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/61f88a9fe7cee3409db9c589b03b15c2ffdc3ffa\"\u003e\u003ccode\u003e61f88a9\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify which packages have been considered and rejected\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0add524a24c6210807a66e0f9149200b32cc98a9\"\u003e\u003ccode\u003e0add524\u003c/code\u003e\u003c/a\u003e [docs.contributing] Clarify when we will add support for new third-party pack...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/eee9505610a64276341a03f2a0b0dee5f500916b\"\u003e\u003ccode\u003eeee9505\u003c/code\u003e\u003c/a\u003e [pylint] Remove old command\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/804592648f8d0e56f7f41112d2945cf52d1d2a6b\"\u003e\u003ccode\u003e8045926\u003c/code\u003e\u003c/a\u003e [mypy] Don't ignore orjson\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v4.0.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 `psycopg2-binary` from 2.9.11 to 2.9.12\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2-binary's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.12\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite loop with malformed interval (:ticket:\u003ccode\u003e1835\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/3a6d9d6ddc6b53eaa80b712f5fa6b23abbdc38db\"\u003e\u003ccode\u003e3a6d9d6\u003c/code\u003e\u003c/a\u003e ci: include almalinux in whieel building\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ebca6bf0f86bc6cbdc86de1eb3a53eaf49966d86\"\u003e\u003ccode\u003eebca6bf\u003c/code\u003e\u003c/a\u003e chore: bump to version 3.9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/0196f02cc9512df8de3c941f87d27bda98f9f7af\"\u003e\u003ccode\u003e0196f02\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/cibuildwheel from 3.3.1 to 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d157bdc2235a42dc1742936dbb0f5cfc8e4d2eb7\"\u003e\u003ccode\u003ed157bdc\u003c/code\u003e\u003c/a\u003e build(deps): bump docker/setup-qemu-action from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/7fccc0f5066a40dea530512abbf02621f4182b81\"\u003e\u003ccode\u003e7fccc0f\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d52a61eb2e6095fc1b9891bfcca44ebfac509e55\"\u003e\u003ccode\u003ed52a61e\u003c/code\u003e\u003c/a\u003e chore: bump dependency libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/b231d726a01d55e07ec3620b2b82f4a2da37ba62\"\u003e\u003ccode\u003eb231d72\u003c/code\u003e\u003c/a\u003e chore: fix building binary images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/6d76e8479f0f522c2e07ce0e2701030d8fd63785\"\u003e\u003ccode\u003e6d76e84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1836\"\u003e#1836\u003c/a\u003e from psycopg/fix-1835\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f7e314c7ab418ab9b9956e694956089a49c5c3b9\"\u003e\u003ccode\u003ef7e314c\u003c/code\u003e\u003c/a\u003e fix: overflow in malformed interval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/eb905c124b75f2a5183d22177b85af20914b0f17\"\u003e\u003ccode\u003eeb905c1\u003c/code\u003e\u003c/a\u003e docs: replace bare except clause with except Exception\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openai` from 2.17.0 to 2.37.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.37.0\u003c/h2\u003e\n\u003ch2\u003e2.37.0 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0\"\u003ev2.36.0...v2.37.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 service_tier parameter to responses compact method (\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e625827c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal/types:\u003c/strong\u003e support eagerly validating pydantic iterators (\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e7e527bc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary client_id when using workload identity provider for auth (\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003ec39ea8d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add missing f-string prefix in file type error message (\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003ec85ebd9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.36.0\u003c/h2\u003e\n\u003ch2\u003e2.36.0 (2026-05-07)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.35.1...v2.36.0\"\u003ev2.35.1...v2.36.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/13c639cc7d57e4fbd4406563511e15eeb88a54b2\"\u003e13c639c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e realtime 2 (\u003ca href=\"https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e\"\u003e8fe0ab8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.35.1\u003c/h2\u003e\n\u003ch2\u003e2.35.1 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.35.0...v2.35.1\"\u003ev2.35.0...v2.35.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix imagegen \u003ccode\u003esize\u003c/code\u003e enum regression (\u003ca href=\"https://github.com/openai/openai-python/commit/44846536bc3b02c393daa5bae70a85de04c7f621\"\u003e4484653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.35.0\u003c/h2\u003e\n\u003ch2\u003e2.35.0 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.34.0...v2.35.0\"\u003ev2.34.0...v2.35.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update image 2 (\u003ca href=\"https://github.com/openai/openai-python/commit/0ba55d7569565045426e1587906a70d5682a4bba\"\u003e0ba55d7\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/72bf67acbc9f030c20db3d5a1a74ea6d67d55f51\"\u003e72bf67a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove legacy python cli (\u003ca href=\"https://github.com/openai/openai-python/commit/32f36e447d02c3124af8ab48fcc3537df2fed66e\"\u003e32f36e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erename legacy python cli entrypoint (\u003ca href=\"https://github.com/openai/openai-python/commit/a3b182d6d2c2e6fe1d53ca7550b2d43e0f8b2cd3\"\u003ea3b182d\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/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.37.0 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.36.0...v2.37.0\"\u003ev2.36.0...v2.37.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 service_tier parameter to responses compact method (\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e625827c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal/types:\u003c/strong\u003e support eagerly validating pydantic iterators (\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e7e527bc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unnecessary client_id when using workload identity provider for auth (\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003ec39ea8d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add missing f-string prefix in file type error message (\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003ec85ebd9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.36.0 (2026-05-07)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.35.1...v2.36.0\"\u003ev2.35.1...v2.36.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e manual updates (\u003ca href=\"https://github.com/openai/openai-python/commit/13c639cc7d57e4fbd4406563511e15eeb88a54b2\"\u003e13c639c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e realtime 2 (\u003ca href=\"https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e\"\u003e8fe0ab8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.35.1 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.35.0...v2.35.1\"\u003ev2.35.0...v2.35.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e fix imagegen \u003ccode\u003esize\u003c/code\u003e enum regression (\u003ca href=\"https://github.com/openai/openai-python/commit/44846536bc3b02c393daa5bae70a85de04c7f621\"\u003e4484653\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.35.0 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.34.0...v2.35.0\"\u003ev2.34.0...v2.35.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update image 2 (\u003ca href=\"https://github.com/openai/openai-python/commit/0ba55d7569565045426e1587906a70d5682a4bba\"\u003e0ba55d7\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/72bf67acbc9f030c20db3d5a1a74ea6d67d55f51\"\u003e72bf67a\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremove legacy python cli (\u003ca href=\"https://github.com/openai/openai-python/commit/32f36e447d02c3124af8ab48fcc3537df2fed66e\"\u003e32f36e4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003erename legacy python cli entrypoint (\u003ca href=\"https://github.com/openai/openai-python/commit/a3b182d6d2c2e6fe1d53ca7550b2d43e0f8b2cd3\"\u003ea3b182d\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\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/openai/openai-python/commit/658be644f48028ea3c7b1545034470fda75a70ba\"\u003e\u003ccode\u003e658be64\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3213\"\u003e#3213\u003c/a\u003e from openai/release-please--branches--main--changes-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/8a7cac34cbc64fe02854beb3659f4bb5f46815f9\"\u003e\u003ccode\u003e8a7cac3\u003c/code\u003e\u003c/a\u003e release: 2.37.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/9b4bf8edbac6aab217f1ac4436a47cbca2cad43b\"\u003e\u003ccode\u003e9b4bf8e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/openai/openai-python/issues/1903\"\u003e#1903\u003c/a\u003e from stainless-sdks/dev/jtian/remove-unnecessary-params\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c39ea8d12a010052d7f02cebe8daabd2d1f89597\"\u003e\u003ccode\u003ec39ea8d\u003c/code\u003e\u003c/a\u003e feat: Remove unnecessary client_id when using workload identity provider for ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/7e527bc927cc58b74d7619abf7f1fbcfff8bddfa\"\u003e\u003ccode\u003e7e527bc\u003c/code\u003e\u003c/a\u003e feat(internal/types): support eagerly validating pydantic iterators\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/625827c5509ece3c40e5002be37a9bd9d91b5374\"\u003e\u003ccode\u003e625827c\u003c/code\u003e\u003c/a\u003e feat(api): add service_tier parameter to responses compact method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c85ebd935cb4b80e7e97ce255437684f6411fb00\"\u003e\u003ccode\u003ec85ebd9\u003c/code\u003e\u003c/a\u003e fix(client): add missing f-string prefix in file type error message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/38d75d74a5626472cd7d1be9705ea8aba29a6b22\"\u003e\u003ccode\u003e38d75d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/openai/openai-python/issues/3205\"\u003e#3205\u003c/a\u003e from openai/release-please--branches--main--changes-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/ff683ffbeba94fc01d93966b774c05a3471f2495\"\u003e\u003ccode\u003eff683ff\u003c/code\u003e\u003c/a\u003e release: 2.36.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/8fe0ab87e67eeb3cc27426b50093845229520f0e\"\u003e\u003ccode\u003e8fe0ab8\u003c/code\u003e\u003c/a\u003e feat(api): realtime 2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.17.0...v2.37.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `simplejson` from 3.20.2 to 4.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/simplejson/simplejson/releases\"\u003esimplejson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 2.7 wheel builds for Windows platforms by \u003ca href=\"https://github.com/etrepum\"\u003e\u003ccode\u003e@​etrepum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/378\"\u003esimplejson/simplejson#378\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/simplejson/simplejson/compare/v4.1.0...v4.1.1\"\u003ehttps://github.com/simplejson/simplejson/compare/v4.1.0...v4.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAccelerate indented encoding in the C extension; release 4.1.0 by \u003ca href=\"https://github.com/etrepum\"\u003e\u003ccode\u003e@​etrepum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/376\"\u003esimplejson/simplejson#376\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/simplejson/simplejson/compare/v4.0.1...v4.1.0\"\u003ehttps://github.com/simplejson/simplejson/compare/v4.0.1...v4.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExclude Pyodide wheels from PyPI uploads by \u003ca href=\"https://github.com/etrepum\"\u003e\u003ccode\u003e@​etrepum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/375\"\u003esimplejson/simplejson#375\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/simplejson/simplejson/compare/v4.0.0...v4.0.1\"\u003ehttps://github.com/simplejson/simplejson/compare/v4.0.0...v4.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eVersion 4.0.0 released 2026-04-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esimplejson 4 requires Python 2.7 or Python 3.8+. Older Python\nversions (2.5, 2.6, 3.0-3.7) are no longer supported. pip will\nnot install simplejson 4 on unsupported versions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe C extension now uses heap types and per-module state instead of\nstatic types and global state. This is required for free-threading\nsupport and sub-interpreter isolation. The Python-level API is\nunchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFull support for Python 3.13+ free-threading (PEP 703). The C\nextension is now safe to use with the GIL disabled (python3.14t):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eConverted all static types to heap types with per-module state\u003c/li\u003e\n\u003cli\u003eAdded per-object critical sections to scanner and encoder\u003c/li\u003e\n\u003cli\u003eAdded free-threading-safe dict operations for Python 3.13+\u003c/li\u003e\n\u003cli\u003eUnified per-module state management and templated parser\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/363\"\u003esimplejson/simplejson#363\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/364\"\u003esimplejson/simplejson#364\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/365\"\u003esimplejson/simplejson#365\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/367\"\u003esimplejson/simplejson#367\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/369\"\u003esimplejson/simplejson#369\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNumerous C extension memory safety fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix use-after-free and leak in encoder ident handling\u003c/li\u003e\n\u003cli\u003eFix NULL dereferences on OOM in module init and static string init\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/simplejson/simplejson/blob/main/CHANGES.txt\"\u003esimplejson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion 4.1.1 released 2026-04-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003ebuild_wheels_py27\u003c/code\u003e CI job now also builds Python 2.7 wheels\nfor Windows AMD64 and Windows x86, joining the existing Py2.7\nmanylinux1 / manylinux2010 x86_64 wheels. This unblocks offline /\n\u003ccode\u003e--no-index\u003c/code\u003e installs on Py2.7-on-Windows (the original\nreporter's case), which previously had no matching binary wheel on\nPyPI, fell through to the sdist, and failed on the PEP 517\nisolated-build step complaining that \u003ccode\u003esetuptools\u0026gt;=42\u003c/code\u003e was not in\nthe wheelhouse.\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/377\"\u003esimplejson/simplejson#377\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 4.1.0 released 2026-04-22\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eThe C extension now accelerates encoding when \u003ccode\u003eindent=\u003c/code\u003e is set.\nPreviously the encoder fell back to the pure-Python implementation\nwhenever a non-None \u003ccode\u003eindent\u003c/code\u003e was passed; now the C encoder emits\nthe newline-plus-indent prefix, the level-aware item separator, and\nthe closing indent directly.  A representative nested-dict workload\nbenchmarks about 4-5x faster end-to-end, and the \u003ccode\u003eindent=0\u003c/code\u003e and\nempty-container edge cases continue to match the Python output\nbyte-for-byte.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe C extension now emits PEP 678 \u003ccode\u003eexc.add_note()\u003c/code\u003e annotations on\nserialization failures, matching the pure-Python encoder.  A chained\nerror on \u003ccode\u003e{'a': [1, object(), 3]}\u003c/code\u003e produces the same three notes\n(\u003ccode\u003ewhen serializing object object\u003c/code\u003e, \u003ccode\u003ewhen serializing list item 1\u003c/code\u003e,\n\u003ccode\u003ewhen serializing dict item 'a'\u003c/code\u003e) whether the speedups are loaded\nor not, so the add_note assertions in \u003ccode\u003etest_errors.py\u003c/code\u003e no longer\nneed \u003ccode\u003eindent=2\u003c/code\u003e to force the Python path.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 4.0.1 released 2026-04-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSkip uploading Pyodide/wasm wheels to PyPI, which rejects them with\n\u0026quot;unsupported platform tag 'pyodide_2024_0_wasm32'\u0026quot;. The wheels are\nstill built in CI and preserved as workflow artifacts.\n\u003ca href=\"https://redirect.github.com/simplejson/simplejson/pull/375\"\u003esimplejson/simplejson#375\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 4.0.0 released 2026-04-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esimplejson 4 requires Python 2.7 or Python 3.8+. Older Python\nversions (2.5, 2.6, 3.0-3.7) are no longer supported. pip will\nnot install simplejson 4 on unsupported versions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe C extension now uses heap types and per-module state instead of\nstatic types and global state. This is required for free-threading\nsupport and sub-interpreter isolation. The Python-level API is\nunchanged.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFull support for Python 3.13+ free-threading (PEP 703). The C\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/639b2ee73b2de6b385fcd4d44e0e08054a4d8a0e\"\u003e\u003ccode\u003e639b2ee\u003c/code\u003e\u003c/a\u003e Add Python 2.7 wheel builds for Windows platforms (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/0fd3185ce301bdefe61bbbf510536fa9127962fb\"\u003e\u003ccode\u003e0fd3185\u003c/code\u003e\u003c/a\u003e Accelerate indented encoding in the C extension; release 4.1.0 (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/376\"\u003e#376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/19b5f94f235d3ac11646b82c02f292845b2aa184\"\u003e\u003ccode\u003e19b5f94\u003c/code\u003e\u003c/a\u003e Exclude Pyodide wheels from PyPI uploads (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/1608c050bbc2ae67ddfe913dad83bed7d588aa27\"\u003e\u003ccode\u003e1608c05\u003c/code\u003e\u003c/a\u003e Use JSONDecodeError for out-of-range end indices in C scanstring (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/3bba17935f12695355b5280df2a93bf963b704dd\"\u003e\u003ccode\u003e3bba179\u003c/code\u003e\u003c/a\u003e Encoder parity fixes (for_json/_asdict) and TSan stress CI job (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/7b22d65b92ac7e69f740f59fe11548216b79c098\"\u003e\u003ccode\u003e7b22d65\u003c/code\u003e\u003c/a\u003e Error parity for the C and Python scanstring in surrogate and truncated strin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/825100a7fc498dafae31d10bef3e3cfaba1fdc5b\"\u003e\u003ccode\u003e825100a\u003c/code\u003e\u003c/a\u003e Release version 4.0.0: free-threading, CPython json parity, Python 2.7 fixes ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/0dbb9d875127a9009f01a4036fa950b0a5f4f589\"\u003e\u003ccode\u003e0dbb9d8\u003c/code\u003e\u003c/a\u003e C extension: dead code cleanup, fast paths for dict/list/string encoding, cor...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/e2e5f0b2d3bae3fd9a56bbaab42f6d75fb980ad5\"\u003e\u003ccode\u003ee2e5f0b\u003c/code\u003e\u003c/a\u003e Add Python 3.13+ free-threading support to dict operations (\u003ca href=\"https://redirect.github.com/simplejson/simplejson/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simplejson/simplejson/commit/e817370a91f4f51a0aec5f0f7bdeb1ca601ed101\"\u003e\u003ccode\u003ee817370\u003c/code\u003e\u003c/a\u003e Fix free-threading (3.14t) crashes: heap types, unified per-module state, tem...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/simplejson/simplejson/compare/v3.20.2...v4.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 3.1.2 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Incre...\n\n_Description has been truncated_","html_url":"https://github.com/RANJITHKUMARJN/opentelemetrymain/pull/208","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/RANJITHKUMARJN%2Fopentelemetrymain/issues/208","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/208/packages"}},{"old_version":"2.2.5","new_version":"3.1.3","update_type":"major","path":null,"pr_created_at":"2026-05-21T02:19:12.000Z","version_change":"2.2.5 → 3.1.3","issue":{"uuid":"4491187680","node_id":"PR_kwDOSSwFHc7dw07M","number":3,"state":"closed","title":"Bump the pip group across 23 directories with 8 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-21T02:22:30.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-21T02:19:12.000Z","updated_at":"2026-05-21T02:22:32.000Z","time_to_close":198,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":8,"packages":[{"name":"jinja2","old_version":"3.1.3","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"flask","old_version":"2.2.5","new_version":"3.1.3","repository_url":"https://github.com/pallets/flask"},{"name":"werkzeug","old_version":"2.2.3","new_version":"3.1.6","repository_url":"https://github.com/pallets/werkzeug"},{"name":"cryptography","old_version":"42.0.5","new_version":"46.0.7","repository_url":"https://github.com/pyca/cryptography"},{"name":"pillow","old_version":"9.5.0","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"zipp","old_version":"3.15.0","new_version":"3.19.1","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 2 updates in the /benchmarks/XBEN-005-24/app directory: [idna](https://github.com/kjd/idna) and [jinja2](https://github.com/pallets/jinja).\nBumps the pip group with 3 updates in the /benchmarks/XBEN-007-24/app directory: [jinja2](https://github.com/pallets/jinja), [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\nBumps the pip group with 2 updates in the /benchmarks/XBEN-021-24/app directory: [idna](https://github.com/kjd/idna) and [jinja2](https://github.com/pallets/jinja).\nBumps the pip group with 2 updates in the /benchmarks/XBEN-058-24/app directory: [idna](https://github.com/kjd/idna) and [jinja2](https://github.com/pallets/jinja).\nBumps the pip group with 1 update in the /benchmarks/XBEN-062-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 2 updates in the /benchmarks/XBEN-063-24/app/website directory: [flask](https://github.com/pallets/flask) and [pymysql](https://github.com/PyMySQL/PyMySQL).\nBumps the pip group with 1 update in the /benchmarks/XBEN-064-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-065-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-068-24/app directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-070-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-073-24/app directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-074-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 2 updates in the /benchmarks/XBEN-076-24/ssti-demo-app directory: [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\nBumps the pip group with 1 update in the /benchmarks/XBEN-082-24/api directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-082-24/app directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-087-24/src directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 3 updates in the /benchmarks/XBEN-089-24/app directory: [jinja2](https://github.com/pallets/jinja), [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\nBumps the pip group with 4 updates in the /benchmarks/XBEN-091-24/app directory: [jinja2](https://github.com/pallets/jinja), [flask](https://github.com/pallets/flask), [werkzeug](https://github.com/pallets/werkzeug) and [cryptography](https://github.com/pyca/cryptography).\nBumps the pip group with 3 updates in the /benchmarks/XBEN-094-24/app directory: [jinja2](https://github.com/pallets/jinja), [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\nBumps the pip group with 3 updates in the /benchmarks/XBEN-100-24/app directory: [jinja2](https://github.com/pallets/jinja), [flask](https://github.com/pallets/flask) and [werkzeug](https://github.com/pallets/werkzeug).\nBumps the pip group with 6 updates in the /benchmarks/XBEN-101-24/app directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.3` | `3.1.6` |\n| [flask](https://github.com/pallets/flask) | `2.2.5` | `3.1.3` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `2.2.3` | `3.1.6` |\n| [cryptography](https://github.com/pyca/cryptography) | `42.0.5` | `46.0.7` |\n| [pillow](https://github.com/python-pillow/Pillow) | `9.5.0` | `12.2.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.15.0` | `3.19.1` |\n\nBumps the pip group with 1 update in the /benchmarks/XBEN-102-24/app directory: [flask](https://github.com/pallets/flask).\nBumps the pip group with 1 update in the /benchmarks/XBEN-103-24/app directory: [flask](https://github.com/pallets/flask).\n\nUpdates `idna` from 3.7 to 3.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.13\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.12\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.9\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for certain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no longer testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.8\"\u003ehttps://github.com/kjd/idna/compare/v3.7...v3.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.15 (2026-05-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnforce DNS-length cap on individual labels early in \u003ccode\u003echeck_label\u003c/code\u003e,\nshort-circuiting contextual-rule processing for oversized input\nwhile staying compatible with UTS 46 usage.\u003c/li\u003e\n\u003cli\u003eTidy core helpers: hoist bidi category sets to module-level\nfrozensets (avoiding per-codepoint list construction), simplify\nlength checks, and reuse the shared \u003ccode\u003e_unicode_dots_re\u003c/code\u003e from\n\u003ccode\u003eidna.core\u003c/code\u003e in the codec module.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eraise ... from err\u003c/code\u003e for proper exception chaining and\nswitch internal string formatting to f-strings.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eflit_core\u003c/code\u003e 4.x in the build backend.\u003c/li\u003e\n\u003cli\u003eExpand the ruff lint set (flake8-bugbear, flake8-simplify,\npyupgrade, perflint) and apply the surfaced fixes; pin lint CI\nto Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration for GitHub Actions.\u003c/li\u003e\n\u003cli\u003eConvert README and HISTORY from reStructuredText to Markdown.\u003c/li\u003e\n\u003cli\u003eReference CVE-2026-45409 for the 3.14 advisory in place of the\ninitial GHSA identifier.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Felix Yan, Stan Ulbrych, and metsw24-max for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.14 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\nof the CVE-2024-3651 mitigation. [CVE-2026-45409]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Stan Ulbrych for reporting the issue.\u003c/p\u003e\n\u003ch2\u003e3.13 (2026-04-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect classification error for codepoint U+A7F1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12 (2026-04-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0.0.\u003c/li\u003e\n\u003cli\u003eIssue a deprecation warning for the transitional argument.\u003c/li\u003e\n\u003cli\u003eAdded lazy-loading to provide some performance improvements.\u003c/li\u003e\n\u003cli\u003eRemoved vestiges of code related to Python 2 support, including\nsegmentation of data structures specific to Jython.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Rodrigo Nogueira for contributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.11 (2025-10-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/af30a092e158181d0b35ac66dfa813788126bdd8\"\u003e\u003ccode\u003eaf30a09\u003c/code\u003e\u003c/a\u003e Release 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/30314d4628744ca14cf2b5820564e5127a9f86f2\"\u003e\u003ccode\u003e30314d4\u003c/code\u003e\u003c/a\u003e Pre-release 3.15rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05d4b219aa9eddc47371fcbd2000f0301016f3e9\"\u003e\u003ccode\u003e05d4b21\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/237\"\u003e#237\u003c/a\u003e from kjd/convert-docs-to-markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2987fdba1962bbb2358399e0084ba062b98a0bee\"\u003e\u003ccode\u003e2987fdb\u003c/code\u003e\u003c/a\u003e Convert README and HISTORY from reStructuredText to Markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/59fa8002d514bf4a5ce7b58f67b9ec587d53fa9c\"\u003e\u003ccode\u003e59fa800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/236\"\u003e#236\u003c/a\u003e from kjd/dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/def69834ced5d4b3c50439d8b99c4c856ec19ca2\"\u003e\u003ccode\u003edef6983\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bbd8004a797185d8c56bb555cd5c88fde05e0631\"\u003e\u003ccode\u003ebbd8004\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/234\"\u003e#234\u003c/a\u003e from StanFromIreland/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/edd07c05024344a6ccb517414ccb36683aee99fc\"\u003e\u003ccode\u003eedd07c0\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.35.2 to 4.35.2 in the actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5557db030c11bdec50d62aa5f631d705d33ba123\"\u003e\u003ccode\u003e5557db0\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f11746cf4981d25123ef7830d3ee60f07de8ae3d\"\u003e\u003ccode\u003ef11746c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/235\"\u003e#235\u003c/a\u003e from StanFromIreland/patch-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.4 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.4...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.4 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation.\n:issue:\u003ccode\u003e1921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e\ncall. :issue:\u003ccode\u003e2021\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e\nobjects. :issue:\u003ccode\u003e2025\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object.\n:issue:\u003ccode\u003e2027\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. :pr:\u003ccode\u003e2061\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were\nsearched. :issue:\u003ccode\u003e1661\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not\ncontain the templates directory. :issue:\u003ccode\u003e1705\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. :pr:\u003ccode\u003e1880\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. :pr:\u003ccode\u003e1870\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1\"\u003e\u003ccode\u003e877f6e5\u003c/code\u003e\u003c/a\u003e release version 3.1.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f\"\u003e\u003ccode\u003e8d58859\u003c/code\u003e\u003c/a\u003e remove test pypi\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.4...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` from 3.0.3 to 3.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/releases\"\u003eflask's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.3 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.3/\"\u003ehttps://pypi.org/project/Flask/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-3\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-3\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys but not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. \u003ca href=\"https://github.com/pallets/flask/security/advisories/GHSA-68rp-wp8r-4726\"\u003eGHSA-68rp-wp8r-4726\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.2/\"\u003ehttps://pypi.org/project/Flask/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/page/changes/#version-3-1-2\"\u003ehttps://flask.palletsprojects.com/page/changes/#version-3-1-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/38?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/38?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5774\"\u003e#5774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state of \u003ccode\u003esession\u003c/code\u003e is correct. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5786\"\u003e#5786\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5776\"\u003e#5776\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.1\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.1/\"\u003ehttps://pypi.org/project/Flask/3.1.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-1\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/flask/milestone/36?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/36?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. GHSA-4grg-w6v8-c28g\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5645\"\u003e#5645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands are shown. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5673\"\u003e#5673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return \u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier for Quart. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5659\"\u003e#5659\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.0\u003c/h2\u003e\n\u003cp\u003eThis is the Flask 3.1.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. We encourage everyone to upgrade, and to use a tool such as \u003ca href=\"https://pypi.org/project/pip-tools/\"\u003epip-tools\u003c/a\u003e to pin all dependencies and control upgrades. Test with warnings treated as errors to be able to adapt to deprecation warnings early.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.1.0/\"\u003ehttps://pypi.org/project/Flask/3.1.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\"\u003ehttps://flask.palletsprojects.com/en/stable/changes/#version-3-1-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/33?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/33?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5623\"\u003e#5623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases. Werkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5624\"\u003e#5624\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5633\"\u003e#5633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option responses. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5496\"\u003e#5496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and \u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when opening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5504\"\u003e#5504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only through the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added \u003ccode\u003eMAX_FORM_MEMORY_SIZE\u003c/code\u003e and \u003ccode\u003eMAX_FORM_PARTS\u003c/code\u003e config. Added documentation about resource limits to the security page. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5625\"\u003e#5625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003ePartitioned\u003c/code\u003e cookie attribute (CHIPS), with the \u003ccode\u003eSESSION_COOKIE_PARTITIONED\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5472\"\u003e#5472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-e path\u003c/code\u003e takes precedence over default \u003ccode\u003e.env\u003c/code\u003e and \u003ccode\u003e.flaskenv\u003c/code\u003e files. \u003ccode\u003eload_dotenv\u003c/code\u003e loads default files in addition to a path unless \u003ccode\u003eload_defaults=False\u003c/code\u003e is passed. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5628\"\u003e#5628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport key rotation with the \u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e config, a list of old secret keys that can still be used for unsigning. Extensions will need to add support. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5621\"\u003e#5621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix how setting \u003ccode\u003ehost_matching=True\u003c/code\u003e or \u003ccode\u003esubdomain_matching=False\u003c/code\u003e interacts with \u003ccode\u003eSERVER_NAME\u003c/code\u003e. Setting \u003ccode\u003eSERVER_NAME\u003c/code\u003e no longer restricts requests to only that domain. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5553\"\u003e#5553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.trusted_hosts\u003c/code\u003e is checked during routing, and can be set through the \u003ccode\u003eTRUSTED_HOSTS\u003c/code\u003e config. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5636\"\u003e#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe session is marked as accessed for operations that only access the keys\nbut not the values, such as \u003ccode\u003ein\u003c/code\u003e and \u003ccode\u003elen\u003c/code\u003e. :ghsa:\u003ccode\u003e68rp-wp8r-4726\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-08-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003estream_with_context\u003c/code\u003e does not fail inside async views. :issue:\u003ccode\u003e5774\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003efollow_redirects\u003c/code\u003e in the test client, the final state\nof \u003ccode\u003esession\u003c/code\u003e is correct. :issue:\u003ccode\u003e5786\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRelax type hint for passing bytes IO to \u003ccode\u003esend_file\u003c/code\u003e. :issue:\u003ccode\u003e5776\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix signing key selection order when key rotation is enabled via\n\u003ccode\u003eSECRET_KEY_FALLBACKS\u003c/code\u003e. :ghsa:\u003ccode\u003e4grg-w6v8-c28g\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix type hint for \u003ccode\u003ecli_runner.invoke\u003c/code\u003e. :issue:\u003ccode\u003e5645\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eflask --help\u003c/code\u003e loads the app and plugins first to make sure all commands\nare shown. :issue:\u003ccode\u003e5673\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark sans-io base class as being able to handle views that return\n\u003ccode\u003eAsyncIterable\u003c/code\u003e. This is not accurate for Flask, but makes typing easier\nfor Quart. :pr:\u003ccode\u003e5659\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e5623\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdate minimum dependency versions to latest feature releases.\nWerkzeug \u0026gt;= 3.1, ItsDangerous \u0026gt;= 2.2, Blinker \u0026gt;= 1.9. :pr:\u003ccode\u003e5624,5633\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eProvide a configuration option to control automatic option\nresponses. :pr:\u003ccode\u003e5496\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFlask.open_resource\u003c/code\u003e/\u003ccode\u003eopen_instance_resource\u003c/code\u003e and\n\u003ccode\u003eBlueprint.open_resource\u003c/code\u003e take an \u003ccode\u003eencoding\u003c/code\u003e parameter to use when\nopening in text mode. It defaults to \u003ccode\u003eutf-8\u003c/code\u003e. :issue:\u003ccode\u003e5504\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.max_content_length\u003c/code\u003e can be customized per-request instead of only\nthrough the \u003ccode\u003eMAX_CONTENT_LENGTH\u003c/code\u003e config. Added\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/22d924701a6ae2e4cd01e9a15bbaf3946094af65\"\u003e\u003ccode\u003e22d9247\u003c/code\u003e\u003c/a\u003e release version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/089cb86dd22bff589a4eafb7ab8e42dc357623b4\"\u003e\u003ccode\u003e089cb86\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c17f379390731543eea33a570a47bd4ef76a54fa\"\u003e\u003ccode\u003ec17f379\u003c/code\u003e\u003c/a\u003e request context tracks session access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/27be9338405382445a7cb01151e084559b98d602\"\u003e\u003ccode\u003e27be933\u003c/code\u003e\u003c/a\u003e start version 3.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4e652d3f68b90d50aa2301d3b7e68c3fafd9251d\"\u003e\u003ccode\u003e4e652d3\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5903\"\u003e#5903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/3d03098a97ddc6a908aa4a50c2ef7381f8297d0a\"\u003e\u003ccode\u003e3d03098\u003c/code\u003e\u003c/a\u003e Abort if the instance folder cannot be created\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/407eb76b27884848383a37c7274654f0271e4bc4\"\u003e\u003ccode\u003e407eb76\u003c/code\u003e\u003c/a\u003e document using gevent for async (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5900\"\u003e#5900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/ac5664d2281533eacafd64f5cc7d5edcdaccab60\"\u003e\u003ccode\u003eac5664d\u003c/code\u003e\u003c/a\u003e document using gevent for async\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/4f79d5b59a56bc4356a97f2e81a35f98cb18d7b3\"\u003e\u003ccode\u003e4f79d5b\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5865\"\u003e#5865\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/fe3b215d3ade4db68262dae1a3cdc464a1fc524f\"\u003e\u003ccode\u003efe3b215\u003c/code\u003e\u003c/a\u003e Increase required flit_core version to 3.11\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/flask/compare/3.0.3...3.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `werkzeug` from 3.0.3 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/releases\"\u003ewerkzeug's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.6 security fix release, which fixes a security issue but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.6/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in multi-segment paths. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x\"\u003eGHSA-29vq-49wr-vm6x\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.5/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/43?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/43?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless of extension or surrounding spaces. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-87hc-h4r5-73f7\"\u003eGHSA-87hc-h4r5-73f7\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary. This fixes the previous attempt, which caused incorrect content lengths. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3077\"\u003e#3077\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAttributeError\u003c/code\u003e when initializing \u003ccode\u003eDebuggedApplication\u003c/code\u003e with \u003ccode\u003epin_security=False\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3075\"\u003e#3075\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.4\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.4 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.4/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.4/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\"\u003ehttps://werkzeug.palletsprojects.com/page/changes/#version-3-1-4\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/42?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/42?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special device names. This prevents reading from these when using \u003ccode\u003esend_from_directory\u003c/code\u003e. \u003ccode\u003esecure_filename\u003c/code\u003e already prevented writing to these. \u003ca href=\"https://github.com/pallets/werkzeug/security/advisories/GHSA-hgf8-39gv-g3f2\"\u003eghsa-hgf8-39gv-g3f2\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe debugger pin fails after 10 attempts instead of 11. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3020\"\u003e#3020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3065\"\u003e#3065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove CPU usage during Watchdog reloader. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3054\"\u003e#3054\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.json\u003c/code\u003e annotation is more accurate. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3067\"\u003e#3067\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTraceback rendering handles when the line number is beyond the available source lines. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3044\"\u003e#3044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eHTTPException.get_response\u003c/code\u003e annotation and doc better conveys the distinction between WSGI and sans-IO responses. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3056\"\u003e#3056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.3\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.3/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3\"\u003ehttps://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/werkzeug/milestone/41?closed=1\"\u003ehttps://github.com/pallets/werkzeug/milestone/41?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInitial data passed to \u003ccode\u003eMultiDict\u003c/code\u003e and similar interfaces only accepts \u003ccode\u003elist\u003c/code\u003e, \u003ccode\u003etuple\u003c/code\u003e, or \u003ccode\u003eset\u003c/code\u003e when passing multiple values. It had been changed to accept any \u003ccode\u003eCollection\u003c/code\u003e, but this matched types that should be treated as single values, such as \u003ccode\u003ebytes\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/2994\"\u003e#2994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen the \u003ccode\u003eHost\u003c/code\u003e header is not set and \u003ccode\u003eRequest.host\u003c/code\u003e falls back to the WSGI \u003ccode\u003eSERVER_NAME\u003c/code\u003e value, if that value is an IPv6 address it is wrapped in \u003ccode\u003e[]\u003c/code\u003e to match the \u003ccode\u003eHost\u003c/code\u003e header. \u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/2993\"\u003e#2993\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.2\u003c/h2\u003e\n\u003cp\u003eThis is the Werkzeug 3.1.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes vs 3.1.0.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Werkzeug/3.1.2/\"\u003ehttps://pypi.org/project/Werkzeug/3.1.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2\"\u003ehttps://werkzeug.palletsprojects.com/en/stable/changes/#version-3-1-2\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/werkzeug/blob/main/CHANGES.rst\"\u003ewerkzeug's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2026-02-19\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special devices names in\nmulti-segment paths. :ghsa:\u003ccode\u003e29vq-49wr-vm6x\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.make_conditional\u003c/code\u003e sets the \u003ccode\u003eAccept-Ranges\u003c/code\u003e header even if it\nis not a satisfiable range request. :issue:\u003ccode\u003e3108\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2026-01-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow more special device names, regardless\nof extension or surrounding spaces. :ghsa:\u003ccode\u003e87hc-h4r5-73f7\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary.\nThis fixes the previous attempt, which caused incorrect content lengths.\n:issue:\u003ccode\u003e3065\u003c/code\u003e :issue:\u003ccode\u003e3077\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAttributeError\u003c/code\u003e when initializing \u003ccode\u003eDebuggedApplication\u003c/code\u003e with\n\u003ccode\u003epin_security=False\u003c/code\u003e. :issue:\u003ccode\u003e3075\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.4\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-28\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esafe_join\u003c/code\u003e on Windows does not allow special device names. This prevents\nreading from these when using \u003ccode\u003esend_from_directory\u003c/code\u003e. \u003ccode\u003esecure_filename\u003c/code\u003e\nalready prevented writing to these. :ghsa:\u003ccode\u003ehgf8-39gv-g3f2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe debugger pin fails after 10 attempts instead of 11. :pr:\u003ccode\u003e3020\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe multipart form parser handles a \u003ccode\u003e\\r\\n\u003c/code\u003e sequence at a chunk boundary.\n:issue:\u003ccode\u003e3065\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImprove CPU usage during Watchdog reloader. :issue:\u003ccode\u003e3054\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eRequest.json\u003c/code\u003e annotation is more accurate. :issue:\u003ccode\u003e3067\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTraceback rendering handles when the line number is beyond the available\nsource lines. :issue:\u003ccode\u003e3044\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eHTTPException.get_response\u003c/code\u003e annotation and doc better conveys the\ndistinction between WSGI and sans-IO responses. :issue:\u003ccode\u003e3056\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.3\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eInitial data passed to \u003ccode\u003eMultiDict\u003c/code\u003e and similar interfaces only accepts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/04da1b5221b7a7b57e82246e4b5741d37a6b2e56\"\u003e\u003ccode\u003e04da1b5\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/f407712fdc60a09c2b3f4fe7db557703e5d9338d\"\u003e\u003ccode\u003ef407712\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/f54fe98026253e70fbbcd35a6b52fb67cfff1c03\"\u003e\u003ccode\u003ef54fe98\u003c/code\u003e\u003c/a\u003e safe_join prevents Windows special device names in multi-segment paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/d005985ef69ffe3275eda8fb6fb25e074dbe871b\"\u003e\u003ccode\u003ed005985\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/8565c2cbd6681ae8463e77d4fc0795324a7fdae7\"\u003e\u003ccode\u003e8565c2c\u003c/code\u003e\u003c/a\u003e document rule priority (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3102\"\u003e#3102\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/3febc7e90072bffe04c27e6b7478dfc4f88930df\"\u003e\u003ccode\u003e3febc7e\u003c/code\u003e\u003c/a\u003e document rule priority\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/2525b827646c10ab7adb334664e6a4af1b769181\"\u003e\u003ccode\u003e2525b82\u003c/code\u003e\u003c/a\u003e remove state machine docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/4abfbd553cdeb6d4e6fa693340d52b13c884079f\"\u003e\u003ccode\u003e4abfbd5\u003c/code\u003e\u003c/a\u003e rewrite build docstring (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3097\"\u003e#3097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/161c18b2a8800ae6ef377fb3cbdb933a878fea67\"\u003e\u003ccode\u003e161c18b\u003c/code\u003e\u003c/a\u003e rewrite build docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/werkzeug/commit/86e11c29e44726dae524cd9db11549b3b1ad681d\"\u003e\u003ccode\u003e86e11c2\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/werkzeug/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/werkzeug/compare/3.0.3...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.7 to 3.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.13\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.12\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.11\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.10\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.9\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.8\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where IDNAError exception was not being produced for certain inputs.\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.5 as it is no longer testable.\u003c/li\u003e\n\u003cli\u003eDocumentation improvements\u003c/li\u003e\n\u003cli\u003eUpdates to package testing using Github actions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Hugo van Kemenade for contributions to this release.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.8\"\u003ehttps://github.com/kjd/idna/compare/v3.7...v3.8\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.15 (2026-05-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnforce DNS-length cap on individual labels early in \u003ccode\u003echeck_label\u003c/code\u003e,\nshort-circuiting contextual-rule processing for oversized input\nwhile staying compatible with UTS 46 usage.\u003c/li\u003e\n\u003cli\u003eTidy core helpers: hoist bidi category sets to module-level\nfrozensets (avoiding per-codepoint list construction), simplify\nlength checks, and reuse the shared \u003ccode\u003e_unicode_dots_re\u003c/code\u003e from\n\u003ccode\u003eidna.core\u003c/code\u003e in the codec module.\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eraise ... from err\u003c/code\u003e for proper exception chaining and\nswitch internal string formatting to f-strings.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eflit_core\u003c/code\u003e 4.x in the build backend.\u003c/li\u003e\n\u003cli\u003eExpand the ruff lint set (flake8-bugbear, flake8-simplify,\npyupgrade, perflint) and apply the surfaced fixes; pin lint CI\nto Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration for GitHub Actions.\u003c/li\u003e\n\u003cli\u003eConvert README and HISTORY from reStructuredText to Markdown.\u003c/li\u003e\n\u003cli\u003eReference CVE-2026-45409 for the 3.14 advisory in place of the\ninitial GHSA identifier.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Felix Yan, Stan Ulbrych, and metsw24-max for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.14 (2026-05-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\nof the CVE-2024-3651 mitigation. [CVE-2026-45409]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Stan Ulbrych for reporting the issue.\u003c/p\u003e\n\u003ch2\u003e3.13 (2026-04-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect classification error for codepoint U+A7F1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.12 (2026-04-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0.0.\u003c/li\u003e\n\u003cli\u003eIssue a deprecation warning for the transitional argument.\u003c/li\u003e\n\u003cli\u003eAdded lazy-loading to provide some performance improvements.\u003c/li\u003e\n\u003cli\u003eRemoved vestiges of code related to Python 2 support, including\nsegmentation of data structures specific to Jython.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Rodrigo Nogueira for contributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.11 (2025-10-12)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 16.0.0, including significant changes to UTS46\nprocessing. As a result of Unicode ending support for it, transitional\nprocessing no longer has an effect and returns the same result.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/af30a092e158181d0b35ac66dfa813788126bdd8\"\u003e\u003ccode\u003eaf30a09\u003c/code\u003e\u003c/a\u003e Release 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/30314d4628744ca14cf2b5820564e5127a9f86f2\"\u003e\u003ccode\u003e30314d4\u003c/code\u003e\u003c/a\u003e Pre-release 3.15rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/05d4b219aa9eddc47371fcbd2000f0301016f3e9\"\u003e\u003ccode\u003e05d4b21\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/237\"\u003e#237\u003c/a\u003e from kjd/convert-docs-to-markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2987fdba1962bbb2358399e0084ba062b98a0bee\"\u003e\u003ccode\u003e2987fdb\u003c/code\u003e\u003c/a\u003e Convert README and HISTORY from reStructuredText to Markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/59fa8002d514bf4a5ce7b58f67b9ec587d53fa9c\"\u003e\u003ccode\u003e59fa800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/236\"\u003e#236\u003c/a\u003e from kjd/dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/def69834ced5d4b3c50439d8b99c4c856ec19ca2\"\u003e\u003ccode\u003edef6983\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into dependabot/github_actions/actions-f3e34333ea\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/bbd8004a797185d8c56bb555cd5c88fde05e0631\"\u003e\u003ccode\u003ebbd8004\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/234\"\u003e#234\u003c/a\u003e from StanFromIreland/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/edd07c05024344a6ccb517414ccb36683aee99fc\"\u003e\u003ccode\u003eedd07c0\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.35.2 to 4.35.2 in the actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5557db030c11bdec50d62aa5f631d705d33ba123\"\u003e\u003ccode\u003e5557db0\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/f11746cf4981d25123ef7830d3ee60f07de8ae3d\"\u003e\u003ccode\u003ef11746c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/235\"\u003e#235\u003c/a\u003e from StanFromIreland/patch-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.7...v3.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.4 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.1.5\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Jinja2/3.1.5/\"\u003ehttps://pypi.org/project/Jinja2/3.1.5/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/changes/#version-3-1-5\"\u003ehttps://jinja.palletsprojects.com/changes/#version-3-1-5\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/jinja/milestone/16?closed=1\"\u003ehttps://github.com/pallets/jinja/milestone/16?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as by passing a stored reference to a filter that calls its argument. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-q2x7-8rv6-6q7h\"\u003eGHSA-q2x7-8rv6-6q7h\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1792\"\u003e#1792\u003c/a\u003e, \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-gmj6-6f8f-6699\"\u003eGHSA-gmj6-6f8f-6699\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence types. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2032\"\u003e#2032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1952\"\u003e#1952\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in \u003ccode\u003eTemplate.generate_async\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1960\"\u003e#1960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment when calling block references. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1701\"\u003e#1701\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another async-aware filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1781\"\u003e#1781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filter handles \u003ccode\u003eOverflowError\u003c/code\u003e from scientific notation. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1921\"\u003e#1921\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake compiling deterministic for tuple unpacking in a \u003ccode\u003e{% set ... %}\u003c/code\u003e call. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2021\"\u003e#2021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dunder protocol (\u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e/etc) interaction with \u003ccode\u003eUndefined\u003c/code\u003e objects. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2025\"\u003e#2025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecopy\u003c/code\u003e/\u003ccode\u003epickle\u003c/code\u003e support for the internal \u003ccode\u003emissing\u003c/code\u003e object. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2027\"\u003e#2027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnvironment.overlay(enable_async)\u003c/code\u003e is applied correctly. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2061\"\u003e#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe error message from \u003ccode\u003eFileSystemLoader\u003c/code\u003e includes the paths that were searched. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1661\"\u003e#1661\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePackageLoader\u003c/code\u003e shows a clearer error message when the package does not contain the templates directory. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove annotations for methods returning copies. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1880\"\u003e#1880\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eurlize\u003c/code\u003e does not add \u003ccode\u003emailto:\u003c/code\u003e to values like \u003ccode\u003e@a@b\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1870\"\u003e#1870\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTests decorated with \u003ccode\u003e@pass_context\u003c/code\u003e can be used with the \u003ccode\u003e|select\u003c/code\u003e filter. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1624\"\u003e#1624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e for multiple assignment (\u003ccode\u003ea, b = 1, 2\u003c/code\u003e) does not fail when the target is a namespace attribute. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1413\"\u003e#1413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUsing \u003ccode\u003eset\u003c/code\u003e in all branches of \u003ccode\u003e{% if %}{% elif %}{% else %}\u003c/code\u003e blocks does not cause the variable to be considered initially undefined. \u003ca href=\"https://redirect.github.com/pallets/jinja/issues/1253\"\u003e#1253\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.1.5\u003c/h2\u003e\n\u003cp\u003eReleased 2024-12-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe sandboxed environment handles indirect calls to \u003ccode\u003estr.format\u003c/code\u003e, such as\nby passing a stored reference to a filter that calls its argument.\n:ghsa:\u003ccode\u003eq2x7-8rv6-6q7h\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eEscape template name before formatting it into error messages, to avoid\nissues with names that contain f-string syntax.\n:issue:\u003ccode\u003e1792\u003c/code\u003e, :ghsa:\u003ccode\u003egmj6-6f8f-6699\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSandbox does not allow \u003ccode\u003eclear\u003c/code\u003e and \u003ccode\u003epop\u003c/code\u003e on known mutable sequence\ntypes. :issue:\u003ccode\u003e2032\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCalling sync \u003ccode\u003erender\u003c/code\u003e for an async template uses \u003ccode\u003easyncio.run\u003c/code\u003e.\n:pr:\u003ccode\u003e1952\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid unclosed \u003ccode\u003eauto_aiter\u003c/code\u003e warnings. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReturn an \u003ccode\u003eaclose\u003c/code\u003e-able \u003ccode\u003eAsyncGenerator\u003c/code\u003e from\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving \u003ccode\u003eroot_render_func()\u003c/code\u003e unclosed in\n\u003ccode\u003eTemplate.generate_async\u003c/code\u003e. :pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAvoid leaving async generators unclosed in blocks, includes and extends.\n:pr:\u003ccode\u003e1960\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe runtime uses the correct \u003ccode\u003econcat\u003c/code\u003e function for the current environment\nwhen calling block references. :issue:\u003ccode\u003e1701\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003e|unique\u003c/code\u003e async-aware, allowing it to be used after another\nasync-aware filter. :issue:\u003ccode\u003e1781\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e|int\u003c/code\u003e filte...\n\n_Description has been truncated_","html_url":"https://github.com/pellera9/validation-benchmarks/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pellera9%2Fvalidation-benchmarks/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"}}]}